PHP  »  Articoli  »  Mondo Php 

Le novità di PHP 5.3: supporto alla metaprogrammazione

di: Gabriele Farina     17 Gennaio 2008

__callStatic e chiamate statiche dinamiche

Probabilmente qualcuno nel team di PHP ha capito che un linguaggio duttile è un linguaggio che funziona. I membri del team hanno quindi hanno deciso di dedicarsi anche a questo e le modifiche si sentono: oltre al late static binding hanno lavorato parecchio sulla duttilità delle chiamate statiche aggiungendo due nuove funzionalità.

In primis il metodo __callStatic, che se implementato in una classe permette di fare l'overload di una chiamata ad un metodo statico, un po' come il metodo magico __call. Vediamo un semplice esempio anche se il funzionamento dovrebbe essere chiaro:

<?php

class A
{
    static function __callStatic( $method_name, $arguments )
        {
        echo "Metodo chiamato: ", $method_name, "\n";
                echo "Argomenti:\n";
                
                foreach( $arguments as $argument )
                {
                        echo "\t+ ", $argument, "\n";
                }
    }
}  
   
A::a( "simple", array( "test" )); 
A::sum( 1, 2, 3, 4, 5 ); 

?>

Ovviamente dopo l'aggiunta di questo metodo magico non si poteva continuare a tralasciare il fatto che una delle più duttili funzionalità di PHP (quella che permette di chiamare un metodo o una proprietà di un oggetto utilizzando una variabile stringa che ne contiene il nome) non fosse supportata nel caso in cui si volesse accedere ad un metodo statico di una classe variabile. Fortunatamente anche qui hanno cambiato tendenza e come sempre un esempio vale più di mille parole:

<?php

$class = 'MyWonderfulClass';
$class::myWonderfulMethod();
$class::$member;
$class::WONDERFUL_CONSTANT;

$namespace = 'it';
$namespace::$class::method();

?>

Entrambe queste funzionalità insieme al late static binding faranno la gioia di molti programmatori. Finalmente vediamo una luce all'orizzonte :)

Conclusione

Eccoci giunti alla fine del nostro articolo. Abbiamo finito per concentrarci solamente sulle nuove funzionalità introdotte che, per un motivo o per l'altro, hanno a che vedere con i metodi e le proprietà statiche. Seppur possa sembrare un caso, in realtà questo non lo è: fino a PHP 5.3 la gestione delle chiamate statiche era enormemente in dietro rispetto al modo in cui venivano gestite le chiamate normali. Quindi lo sforzo degli sviluppatori della versione 5.3 si è concentrato su questo punto per piano piano riuscire ad avvicinare l'attuale versione di PHP (che ricordo a breve diventerà l'unica supportata - quindi consiglio un caldo upgrade nel caso in cui per qualunque motivo a me sconosciuto non l'abbiate ancora fatto) alla prossima major release.

Restano da analizzare alcune librerie aggiunte, come il supporto nativo per MySQL che andrà a sostituire l'attuale porting della libreria mysql_client. Di questo e di altre interessanti novità comunque ci occuperemo in un'altra sede.

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti