Chi sviluppa in Javascript (o altri linguaggi di scripting moderni) sarà sicuramente conscio dell'importanza delle funzioni lambda (chiamate anche chiusure/closures o funzioni anonime/anonymous functions) e della impressionante flessibilità che offrono al codice.
Fino a qualche tempo fa, sembrava quasi un sogno potere scrivere funzioni anonime con PHP, ma ora tutto questo è realtà. Per dichiarare una chiusura non occorre utilizzare alcun namespace (da qui il termine funzione anonima), ma solo il corpo della funzione che segue la parola keyword function e la consueta lista di parametri. Uno degli usi più comuni delle funzioni anonime è sicuramente quello di fungere da callback:
// stampa redBlue
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'red-blue');
Nello snippet precedente, non abbiamo la necessità di dichiarare una funzione e poi passarla come parametro, ma possiamo utilizzare direttamente un callback come argomento della funzione interna preg_replace_callback. In questo caso l'espressione regolare si occupa di convertire le stringhe hypen in stringhe camel case, dunque 'red-blue' diventerà 'redBlue'.
La sintassi Nowdoc è un'altra ottima aggiunta. Come riportato sulla pagina ufficiale della documentazione, Nowdoc sta alla sintassi con virgolette singole come Heredoc sta alla sintassi con virgolette doppie. Se la tecnica Heredoc consente di includere grandi quantità di testo senza la necessità di effettuare l'escape dei caratteri speciali e con la possibilità dell'interpolazione delle variabili infatti, Nowdoc offre le medesime possibilità eccezion fatta per il riconoscimento delle variabili.
Proprio come accade per le virgolette singole, ogni carattere verrà interpretato come carattere semplice, senza nessun significato speciale. Questa tecnica è ottima ad esempio per includere blocchi di codice (per esempio PHP) stampabili:
echo <<<'EOT'
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': \x41
EOT;
Come possiamo notare, è necessario posizionare la label tra virgolette singole. Sarà inoltre possibile (opzionalmente) includere la label tra virgolette doppie nel caso della sintassi Heredoc per differenziare meglio i due comportamenti.
Il nuovo operatore goto si utilizza per "saltare" ad una determinata sezione dello script. Tramite la dichiarazione della keyword goto seguita dalla label, si forza PHP a saltare tutte le istruzioni seguenti fino ad arrivare alla prima istruzione che seguira la label desiderata seguita dal carattere dei due punti (:).
// stampa unicamente 'Bar' goto a; echo 'Foo'; a: echo 'Bar';
Nell'esempio precedente solo la stringa 'Bar' verrà stampata, mentre l'istruzione che dovrebbe stampare la stringa 'Foo' verrà saltata. Una nota importante: la label deve essere conteuta nello stesso file e nello stesso contensto dell'operatore goto, ciò significa che non sarà possibile "saltare fuori o dentro" da una funzione o da un metodo, ad esempio, oppure inserirsi in un qualsiasi ciclo.
Nella second parte dell'articolo vedremo i nuovi metodi magici e le altre novità di questo ricco aggiornamento.
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Zend FrameworkDiventate professionisti dello sviluppo Web. Zend Framework è lo... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |