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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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é,