php lambda closures php-5.3

Funciones de autoejecución en PHP5.3?



lambda closures (1)

Llamada a función de encadenamiento, por ejemplo, foo()() está en discusión para PHP5.4. Hasta entonces, use call_user_func :

$a = call_user_func(function(){ $hidden = ''a''; return function($new) use (&$hidden){ $hidden = $new; return $hidden; }; }); $a(''foo''); var_dump($a);

da:

object(Closure)#2 (2) { ["static"]=> array(1) { ["hidden"]=> string(3) "foo" } ["parameter"]=> array(1) { ["$new"]=> string(10) "<required>" } }

A partir de PHP7, puede ejecutar inmediatamente funciones anónimas como esta:

(function() { echo 123; })(); // will print 123

Estaba intentando tomar prestados algunos paradigmas de programación de JS a PHP (solo por diversión). ¿Hay alguna manera de hacerlo?

$a = (function(){ return ''a''; })();

Estaba pensando que con la combinación de use esto puede ser una buena manera de ocultar las variables de estilo JS

$a = (function(){ $hidden = ''a''; return function($new) use (&$hidden){ $hidden = $new; return $hidden; }; })();

ahora mismo tengo que hacer:

$temp = function(){....}; $a = $temp();

Parece inútil ...