octobre
2008
Connaissez vous la fonction __halt_compiler() de PHP ?
Elle est super !
Elle permet d’encapsuler du code *non PHP* dans du code PHP, et de dire au parseur PHP de ne pas passer dessus.
Ensuite, elle définit une constante : __COMPILER_HALT_OFFSET__ qui donne l’offset (en octet) à partir duquel les données non PHP commencent.
Application idiote, mais bien fonctionnelle : encapsuler les données du .ini dans le fichier PHP chargeant un Zend_Config_Ini :
$fp = fopen(__FILE__, 'r');
fseek($fp, __COMPILER_HALT_OFFSET__);
$data = stream_get_contents($fp);
$tmp = tempnam(sys_get_temp_dir(), uniqid());
file_put_contents($tmp, $data);
$c = new Zend_Config_Ini($tmp);
echo $c->essai->param1 // affiche valeur 1
__halt_compiler();
[essai]
param1 = valeur1
param2 = valeur2
Le problème est que parse_ini_file(), utilisée dans Zend_Config_Ini, accepte uniquement un fichier en paramètre, pas moyen de lui passer un flux …
Ca aurait éviter la création d’un fichier temporaire, très couteuse pour le système et l’application.
PHP est vraiment étonnant.
Commentaires récents
Archives
- novembre 2010
 - août 2010
 - juillet 2010
 - juin 2010
 - mai 2010
 - avril 2010
 - mars 2010
 - février 2010
 - janvier 2010
 - décembre 2009
 - novembre 2009
 - octobre 2009
 - septembre 2009
 - août 2009
 - juillet 2009
 - juin 2009
 - mai 2009
 - avril 2009
 - mars 2009
 - février 2009
 - janvier 2009
 - décembre 2008
 - novembre 2008
 - octobre 2008
 - septembre 2008
 - août 2008
 - juillet 2008
 - juin 2008
 - mai 2008
 - avril 2008
 - mars 2008
 - février 2008
 - janvier 2008
 - décembre 2007
 - novembre 2007
 - octobre 2007
 - septembre 2007
 - août 2007
 - juillet 2007
 - juin 2007
 - mai 2007
 - avril 2007
 - mars 2007
 - février 2007
 

 Un article de doctorrock