Ver Mensaje Individual
  #403 (permalink)  
Antiguo 24/05/2011, 08:33
Avatar de quike88
quike88
 
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Juego: "¿Dónde está el error?"

use() utiliza las variables al momento en el que se declara la función, y no cuando se la llama.

Para que se use la variable después se añade &:

Código PHP:
Ver original
  1. <?php
  2. $fn = function () use (&$country) { echo $country . "<br />"; };
  3. $country = 'Puerto Rico';
  4. $fn();
  5.  
  6. $country = 'Europa';
  7. $fn = function () use (&$country) { echo $country . "<br />"; };
  8. $country = 'Puerto Rico';
  9. $fn();
  10.  
  11. $country = (object)array('name' => 'Europa');
  12. $fn = function () use (&$country) { echo $country->name . "<br />"; };
  13. $country = (object)array('name' => 'Puerto Rico');
  14. $fn();
  15.  
  16. $country = (object)array('name' => 'Europa');
  17. $fn = function () use (&$country) { echo $country->name . "<br />"; };
  18. $country->name = 'Puerto Rico';
  19. $fn();

Y el ultimo ejemplo si funciona correctamente porque al pasar el objeto como parámetro, lo que se pasa es el identificador del mismo, osea que si se cambia el valor después si lo toma.. o eso creo