2012-07-10 39 views
65

Estaba jugando con funciones anónimas en PHP y me di cuenta de que no parecían alcanzar variables fuera de ellas. ¿Hay alguna forma de evitar este problema?variables php en funciones anónimas

Ejemplo:

$variable = "nothing"; 

functionName(someArgument, function() { 
    $variable = "something"; 
}); 

echo $variable; 

seria: "nada". ¿Hay alguna forma de que la función anónima pueda acceder a la variable $?

Respuesta

168

Sí, use a closure:

functionName(someArgument, function() use(&$variable) { 
    $variable = "something"; 
}); 

Tenga en cuenta que con el fin de que usted sea capaz de modificar $variable y recuperar el valor modificado fuera del alcance de la función anónima, tiene que estar referenciado en el cierre usando & .

+1

¡Impresionante! Nunca antes visto eso ... =) – einord

+0

¡Es nuevo! Su sintaxis es nueva en PHP 5.3. –

+1

@Rocket Por lo tanto, para ser justos, es la verdadera sintaxis de la función anónima (en oposición a 'create_function()') y la palabra clave 'use' está documentada (mal) en la [misma página del documento] (http: // php. net/manual/es/functions.anonymous.php) que los describe. – DaveRandom

Cuestiones relacionadas