di: Gabriele Farina 17 Gennaio 2008
Ci siamo lasciati alla fine dell'anno scorso con un articolo che aveva iniziato a parlare delle novità che sarebbero state introdotte in PHP 5.3. Dopo qualche settimana ci ritroviamo in questa sede per continuare il discorso iniziato precedentemente parlando di altre funzionalità e librerie interessanti introdotte con questa nuova release. Purtroppo, nonostante sia passato un po' di tempo, PHP 5.3 non è stato ancora rilasciato (mentre la Zend continua a concentrarsi sui bugfix di PHP 4 che, a quanto pare, non era poi così stabile e sicuro come molti credevano) ma possiamo comunque testare la nuova versione scaricandola dal sito http://snaps.php.net/.
Senza divagare, accenno solamente al fatto che dal sito che contiene gli snapshots delle ultime o imminenti versioni di PHP potete scaricare la versione 6.0; io consiglio di provare questa versione a chiunque fosse interessato ad allargare la propria conoscenza di PHP e fosse intenzionato a trovarsi sul binario giusto quando, finalmente, PHP 6.0 verrà rilasciato.
Tornando ad argomenti più pertinenti, in questo articolo parleremo di alcune funzionalità interessanti (come il late static binding) che verranno apprezzate parecchio da chi sfrutta la metaprogrammazione.
PHP, continuerò a ripeterlo, è purtroppo rimasto un po' indietro rispetto alle attese dei programmatori per quanto riguarda quelle funzionalità che hanno reso celebre linguaggi quali Python e Ruby. Le motivazioni per cui questi due linguaggi stanno sempre più prendendo piede sono molte altre, ma quello che andremo a trattare è sicuramente uno dei motivi: sto parlando di tutti quei concetti che possono essere racchiusi sotto il paradigma della "metaprogrammazione", e che sono così tanto utilizzati dagli ultimi framework MVC che spopolano adesso.
Finalmente qualcuno ha deciso di iniziare a rendere il linguaggio un po' più libero sintatticamente, ed una delle prima reazioni a questa decisione è l'introduzione del late static binding. Senza dilungarci in una spiegazione tecnica e noiosa, vediamo subito un esempio autoesplicativo.
Partiamo da un semplice esempio scritto in PHP 5:
<?php
class A
{
public static function who()
{
echo __CLASS__;
}
public static function test()
{
self::who();
}
}
class B extends A
{
public static function who()
{
echo __CLASS__;
}
}
B::test(); // Output: A;
?>
Come potete notare il comportamento del codice è abbastanza strano: vogliamo che il metodo statico test restituisca il nome delle classe da cui è stato chiamato, ma siccome nelle versioni di PHP precedenti alla 5.3 un metodo statico viene associato in fase di compilazione alla classe in cui questi è definito, non c'è modo di ottenere nativamente questo comportamento.
Guida Zend FrameworkDiventate professionisti dello sviluppo Web. Zend Framework è lo... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Guida PHP con Windows e IISInstallare ambienti per lo sviluppo e la produzione di applicazioni... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso Google AdWords Base27 Febbraio 2012 a Milano |
|
|
Corso Google AdWords Base28 Marzo 2012 a Roma |