Par Nicolas SUPRIN, jeudi 6 septembre 2007 à 14:19 | PHP | #117 | rss
La méthode __autoload permet de s'épargner d'écrire les require de chaque classe utilisées dans une appli.
Avantages
- On gagne en temps de développement à ne plus taper les require et autres include.
- ... heu j'en vois pas d'autres
Inconvéniant
- L'autoload alourdi l'exécution du code...
Mon astuce
Combiner le gain de temps lors du développement, avec autoload, avec les meilleures performances d'un bête require.
Cet autoload génére un Notice, qui m'indique à quel endroit nous avons de la classe à charger aussi le require "pret à coller" qui va bien.
Je n'ai plus qu'a copier/coller le require à l'endroit indiqué.
Le code de mon autoload
<?php require 'Zend/Loader.php'; function __autoload($S_className) { $A_backTrace = debug_backtrace(); $S_message = 'Autoload class '.$S_className.' : <br/>'; $S_message .= '<strong> require \''.str_replace('_', DIRECTORY_SEPARATOR, $S_className).'.php\';</strong><br/>'; if (isset($A_backTrace[0]{'file'})) { $S_message .= 'dans le fichier '.$A_backTrace[0]{'file'}.' Ã la ligne '.$A_backTrace[0]{'line'}; } trigger_error($S_message, E_USER_NOTICE); Zend_Loader::loadClass($S_className); } ?>
Exemple de code pendant le développement
<?php class Form_Inscription extends HTML_QuickForm { public function __construct() { $this->addElement( new HTML_QuickForm_header( 'titre', Zend_Registry::get('trad')->_("Inscription") ) ); } } ?>
Notice
Code "finalisé"
<?php require_once 'HTML/QuickForm.php'; require_once 'HTML/QuickForm/header.php'; class Form_Inscription extends HTML_QuickForm { public function __construct() { $this->addElement( new HTML_QuickForm_header( 'titre', Zend_Registry::get('trad')->_("Inscription") ) ); } } ?>
Conclusion
On pourrait imaginer ecrire automatiquent le require au bon endroit, dans le bon fichier... mais bon, ça représente peut être autant d'interêt que de tirer du canon pour tuer un moustique. ;)





<accent corse>
mais qui c'est cuilà ? "parcimônii ?"
</accent corse>
Aucun trackback.
Pour faire un trackback sur ce billet : http://www.blog.cactuscrew.com/tb.php?id=117&chk=jttzaf