00001 <?php
00002 require_once(__DIR__.'/PEIP_Simple_Autoload.php');
00003
00004
00005
00006
00007
00008
00009
00010
00011
00024 class PEIP_Autoload extends PEIP_Simple_Autoload {
00025
00032 protected function __construct(){
00033 $this->init();
00034 require_once(__DIR__.'/PEIP_Autoload_Paths.php');
00035 $this->setClassPaths(PEIP_Autoload_Paths::$paths);
00036 }
00037
00042 protected static function doGetInstance(){
00043 return self::$instance = new PEIP_Autoload();
00044 }
00045
00053 public static function make(){
00054 $baseDir = str_replace(DIRECTORY_SEPARATOR, '/', realpath(dirname(__FILE__).DIRECTORY_SEPARATOR.'..'));
00055 $iterator = new RecursiveDirectoryIterator($baseDir);
00056 $paths = self::findPaths($baseDir, $iterator);
00057
00058 $pathsFile = __DIR__.'/PEIP_Autoload_Paths.php';
00059 $content = file_get_contents($pathsFile);
00060 echo $content = preg_replace('/public static \$paths = array *\(.*?\);/s', sprintf("public static \$paths = %s;", var_export($paths, true)), $content);
00061 file_put_contents($pathsFile, $content);
00062 }
00063
00074 protected static function findPaths($baseDir, RecursiveDirectoryIterator $iterator, array $paths = array()){
00075 $iterator->rewind();
00076 while($iterator->valid()){
00077 if($iterator->isDir()){
00078 $paths = self::findPaths($baseDir, $iterator->getChildren(), $paths);
00079 }else{
00080 $class = str_replace('.php', '', $iterator->getFilename());
00081 $paths[$class] = str_replace($baseDir, '', $iterator->getPathName());
00082 }
00083 $iterator->next();
00084 }
00085 return $paths;
00086 }
00087
00088
00089 }