Bonjour,
Je poste un petit script PHP pour supprimer les declarations "require_once" dans le Zend Framework et ainsi utiliser l'Autoloader. C'est une des recommandations pour ameliorer les performances.
http://framework.zend.com/manual/fr/...iprequires.sed
Comme indiqué dans cette documentation, il y a déjà une solution sous Unix. Je ne m'y attarde pas. Je vous propose une autre solution avec un script PHP qui fonctionnera donc aussi sur une autre plateforme; Windows par exemple.
Le code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
<?php
function stripRequires($file) {
$exception = array('/Loader/Autoloader.php','/Application.php');
$content = file_get_contents($file);
if( substr($file, -4) == '.php'
&& substr($file, -strlen($exception[0])) != $exception[0]
&& substr($file, -strlen($exception[1])) != $exception[1]
) {
$content = preg_replace('#^\s*require_once.*;$#iUm', '', $content);
return $content;
}
return $content;
}
function removeRequireOnce($dir, $target) {
if(!is_dir($target))
mkdir($target);
$myDirectory = opendir($dir);
while($f = readdir($myDirectory)) {
if($f != '.' && $f != '..'){
if(is_dir($dir.$f)){
removeRequireOnce($dir.$f.'/',$target.$f.'/');
}else{
$content = stripRequires($dir.$f);
if($content !== FALSE)
file_put_contents($target.$f, $content);
}
}
}
closedir($myDirectory);
}
?> |
Utilisation:
removeRequireOnce('../../z/Frameworks/Zend-1.10.8/', '../../z/Frameworks/Zend/');
Le script utilise un répertoire (téléchargé d'internet par exemple) et crée un nouveau dossier avec la suppression des "require_once".
Le script n'est sans doute pas parfait. Si vous avez des améliorations a suggérer, je suis a l'écoute.
En espérant avoir aidé,
Partager