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