2013-03-03 8 views
10

ho visto questa pratica nella documentazione php:Perché funzione di negozio come variabile in PHP

$foo = function() { 
    echo 'foo'; 
} 

$foo(); 

Perché l'hai fatto invece di:

function foo() 
{ 
    echo 'foo'; 
} 

foo(); 
+7

vedere [Funzioni anonime] (http://php.net/manual/en/functions.anonymous.php) – Federkun

+0

Si farebbe così in modo da poter passare quella funzione da un oggetto all'altro. – Lix

+0

A volte le funzioni anonime sono molto utili. Ad esempio hai un modulo e devi convalidare un campo. Sei sicuro di non aver bisogno di questa funzione da nessuna parte, ma qui e devi passare l'argomento callable. Le funzioni anonime dell'IMO sono la strada da percorrere in questa situazione. – Eugene

risposta

11

Sono utili in un pochi modi. Personalmente li uso perché sono più facili da controllare rispetto alle funzioni effettive.

Ma anche, funzioni anonime possono fare questo:

$someVar = "Hello, world!"; 
$show = function() use ($someVar) { 
    echo $someVar; 
} 
$show(); 

funzioni anonime può "importare" variabili dal campo di applicazione al di fuori. La parte migliore è che è sicuro usare i loop (a differenza di JavaScript) perché richiede una copia della variabile da utilizzare con la funzione, a meno che tu non specifichi esplicitamente di passare per riferimento a use (&$someVar)

+6

Potrebbe essere utile un esempio di utilizzo in un ciclo. – MichaelRushton

+0

il comando use, salvavita! – Oritm

+0

fyi: se stai cercando la migliore risposta, direi che il commento sopravanzato di @Laxus è molto utile (se non di più) – cwd

2

Viene spesso utilizzato anche per passare callbacks a funzioni come array_map e molti altri

0

È estremamente utile in alcuni casi particolari. Ad esempio

Server::create('/') 
    ->addGetRoute('test', function(){ 
     return 'Yay!'; 
}) 

Il frammento di codice sopra riportato è un esempio di routing semplice in un'applicazione basata su REST.

Problemi correlati