Ver Mensaje Individual
  #398 (permalink)  
Antiguo 23/05/2011, 21:23
Avatar de Sourcegeek
Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Juego: "¿Dónde está el error?"

Hmm.. Lo último me confundió un poco, sí que soy un joven padawan Bueno, trataré de explicar a ver si me doy a entender:

En el primero la función con use() accede a la variable que debería ser declarada antes de ésta, pero como está declarada después, tira error de undefined variable (variable no definida)
En la segunda función es parecido: Como la variable debe ser definida antes de la declaración de la función, no se toma en cuenta a Puerto Rico porque está después
En la tercera función es igual pero se usan objetos
En la cuarta función, antes de ésta se crea un objeto y se declara la función, pero luego se asigna un valor al objeto (Puerto Rico) para después llamar a la función que tiene que acceder al valor asignado (Puerto Rico). Para explicar mejor, el proceso sería:
1- Creo un objeto
2- Declaro una función
3- Le asigno un valor al objeto
4- El objeto creado antes de la función ahora contiene el valor asignado
5- Se ejecuta la función accesando al valor asignado al objeto creado

Para terminar, el código correcto debería ser:
Código PHP:
<?php
$country 
'Puerto Rico';
$fn = function () use ($country) { echo $country "<br />"; };
$fn();
 
$country 'Puerto Rico';
$fn = function () use ($country) { echo $country "<br />"; };
$fn();
 
$country = (object)array('name' => 'Puerto Rico');
$fn = function () use ($country) { echo $country->name "<br />"; };
$fn();
 
$country = (object)array('name' => 'Europa');
$fn = function () use ($country) { echo $country->name "<br />"; };
$country->name 'Puerto Rico';
$fn();
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies