di: Riccardo Degni 13 Novembre 2009
Il procedimento di lazy loading in PHP non agisce solamente nel caso delle classi, bensì anche con le interfacce. In una modalità del tutto identica a quella vista in precedenza, quando dichiariamo che una classe deve implementare una determinata interfaccia, verrà data a PHP un'ultima chance di caricare quest'ultima senza l'occorrenza di dichiararne l'inclusione.
Ecco un semplice esempio (le regole sui controlli poste in precedenza sono state omesse per semplicità):
function __autoload($name) {
include "oop/interfaces/" . strtolower($name) . "_interface.php";
}
// verrà incluso "oop/interfaces/itest.php"
class Foo implements ITest {
// ...
}
Ed ecco ora il tutto riunito con tanto di controllo sulla presenza delle interfacce:
function __autoload($class_name) {
$interfaces = "oop/interfaces/" . strtolower($class_name) . "_interface.php";
$main = "oop/classes" . strtolower($class_name) . "_class.php";
$extra = "oop/classes_extra" . strtolower($class_name) . "_class.php";
$generic = "oop/generic" . strtolower($class_name) . "_class.php";
if( file_exists($interfaces) ) include $interfaces;
else if( file_exists($main) ) include $main;
else if( file_exists($sub) ) include $sub;
else if( file_exists($generic) ) include $generic;
}
// verrà incluso "oop/interfaces/itest.php"
class Foo implements ITest {
// ...
}
// carica 'oop/classes/white_class.php'
$white = new White();
// carica 'oop/classes_extra/blue_class.php'
$blue = new Blue();
// carica 'oop/generic/green.php'
$blue = new Green();
L'estensione SPL (Standard PHP Library) fornisce alcuni aiuti interessanti nelle procedure di autoloading o lazy loading.
In particolare, abbiamo a disposizione diverse funzioni che ci permettono di avere un maggiore controllo sulla fase di autoload, consentendoci di registrare (spl_autoload_register), de-registrare (spl_autoload_unregister) e chiamare (spl_autoload_call) le funzioni poste nello stack di autoloading con tanto di possibilità di fornire una moltitudine di estensioni possibili (spl_autoload_extensions).
Per una trattazione completa di questo argomento vi rimando alla pagina ufficiale della documentazione: SPL Functions.
In questo articolo abbiamo analizzato un importante concetto offerto dalla OOP. L'implementazione del lazy loading all'interno delle nostre applicazioni di certo non inciderà sulla qualità complessiva delle stesse, ma fornirà un aiuto non indifferente nelle procedure di testing interne e nella pianificazione delle directory che contengono le nostre gerarchie, senza contare la risoluzione di diversi errori dovuti al caricamento delle classi ed alla riduzione di tempo nella dichiarazione delle inclusioni.
Per un ulteriore approfondimento vi rimandiamo alla pagina Autoloading classes della documentazione ufficiale offerta da PHP.net.
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 |