Μεταβλητή πριν από την κλήση ανώνυμης συνάρτησης στην PHP
Ας υποθέσουμε ότι έχουμε τον ακόλουθο κώδικα:
<?php
$pow = 2;
$func = function($num) use ($pow)
{
return $num ** $pow;
};
echo $func(4);
?>
Ο παραπάνω κώδικας λειτουργεί,
επειδή η μεταβλητή $pow
έχει γραφτεί πριν από τη δήλωση της συνάρτησης.
Ωστόσο, αν βάλουμε τη δήλωση
της μεταβλητής πριν από την κλήση της συνάρτησης,
όλα παύουν να λειτουργούν:
<?php
$func = function($num) use ($pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Μπορούμε να διορθώσουμε το πρόβλημα, αν περάσουμε τη μεταβλητή by reference:
<?php
$func = function($num) use (&$pow)
{
return $num ** $pow;
};
$pow = 2;
echo $func(4);
?>
Διορθώστε τον κώδικα, ώστε να λειτουργεί με τον προβλεπόμενο τρόπο:
<?php
$func = function() use ($num1, $num2)
{
return $num1 + $num2;
};
$num1 = 2;
$num2 = 3;
echo $func();
?>