Edit report at https://bugs.php.net/bug.php?id=62452&edit=1

 ID:                 62452
 Updated by:         ni...@php.net
 Reported by:        hanskrentel at yahoo dot de
 Summary:            Variable Aliasing does not work in Closure
-Status:             Open
+Status:             Verified
 Type:               Bug
-Package:            *General Issues
+Package:            Scripting Engine problem
 Operating System:   Multiple
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

Verified on master.


Previous Comments:
------------------------------------------------------------------------
[2012-06-29 19:53:22] hanskrentel at yahoo dot de

Description:
------------
It's not possible to make use of variable aliasing in PHP when the alias is 
used 
within the use clause of a lambda function construct that is assigned to that 
variable (recursion).

PHP denies to do what it is commanded with a Fatal error: Cannot destroy active 
lambda function. But the function is not destroyed. It's just not that the 
variable container contains the identifier of it.

I'd like to change that, and I don't want to waste another variable name. Also 
I 
don't understand how I can actually destroy something I should not have any 
access 
to from PHP userland.

Or if that is intended, please allow us to destroy the active lambda making the 
function return NULL and continue to execute.



Test script:
---------------
$f = function() use (&$f) {
    $f = function() {echo "hello"};
};
$f();
$f();


Expected result:
----------------
hello

Actual result:
--------------
Fatal error: Cannot destroy active lambda function 


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=62452&edit=1

Reply via email to