2009-05-22 16 views
6

Ok, realmente no sabía cómo expresar la pregunta, pero déjame explicarte.¿Cómo ejecuta php una función asignada a la variable?

Supongamos que tengo una variable:

$file = dirname(__FILE__); 

Lo que sucede si le asigno $file a otra variable?

$anotherVariable = $file; 

¿Se ejecuta la función dirname cada vez que asigno?

Gracias por cualquier ayuda.

Respuesta

12

Nº PHP es imprescindible, por lo que el lado derecho de expresiones de asignación se evaluó , y el resultado se almacena "en el" lado izquierdo (en el caso simple y casi en todas partes, la variable denominada en la mano izquierda lado).

$a = $b; // Find the value of $b, and copy it into the value of $a 
$a = 5 + 2; // Evaulate 5 + 2 to get 7, and store this in $a 
$a = funcName(); // Evaluate funcName, which is equivalent to executing the code and obtaining the return value. Copy this value into $a 

Esto es un poco más compleja cuando se asigna por referencia ($ a = $ & b), pero no tenemos que preocuparnos por eso ahora.

2

PHP no tiene cierres como ese.

nombredir (ARCHIVO)

esta función devuelve una cadena.

$ anotherVariable = $ file;

da $ anotherVariable ese mismo valor de cadena.

así que creo que la respuesta a su pregunta es "no", no se ejecuta cada vez.

+0

El cierre puede ser el término equivocado, pero las funciones de php no son ciudadanos de primera clase – catsby

1

No, en ningún caso.

Las funciones de PHP no son identificadores que apuntan a la instancia de la clase Función como se puede ver en Java, ActionScript, JavaScript, etc. Es por eso que no se puede almacenar un enlace para funcionar a una variable. Es por eso que cada vez que llamas a la función es en común lo mismo que incluir() un script para ejecutar. Claro que hay diferencias, pero en el contexto de esta pregunta, incluso con include() y llamar a una función son casi idénticos.

no se confunda con este caso

function myFunc() {return 'hello world';} 
$func = 'myFunc'; 
$a = $func(); 
echo $a; // hello world 

Lea acerca de este caso here Este comportamiento es especial para PHP. No estoy seguro sobre otros idiomas, tal vez en algún lugar donde hay algo. similar a esto, pero nunca lo he conocido.

2

respuesta a la pregunta principal:

$a = function(){ echo "Hello!"; }; 
$a(); 

Las respuestas a las preguntas de menor importancia:

$file = dirname(__FILE__); 
//means: 
//"Evaluate/Execute function dirname() and store its return value in variable $file" 

¿Qué pasa si le asigno $ archivo a otra variable?

Si estamos hablando de asignación regular ($anotherVariable = $file;),
Simplemente copia el valor $file-$anotherVariable tanto son variables independientes.

¿La función dirname se ejecuta cada vez que asigno?

No, no lo hace. Porque la ejecución solo se realiza con (). No () = Sin ejecución.

Cuestiones relacionadas