modified Autoloader for folders exclusion

This commit is contained in:
Anton Grebnev
2011-11-24 19:22:12 +04:00
parent a87845980d
commit 8464c8edac
2 changed files with 44 additions and 10 deletions

View File

@ -11,10 +11,27 @@
class Load
{
static protected $file;
static protected $autoload;
static protected $exclude = array('/.git', '/lib/core/tests', '/lib/core/.git');
/**
* Add exclude path for autoload. Should be called before setAutoloadFrom
* @static
* @param array $exclude list of relative path (from project root)
* @return void
*/
static public function setExclude($exclude = array())
{
if(!is_array($exclude)) {
$exclude = array($exclude);
}
self::$exclude = array_merge(self::$exclude, $exclude);
}
static public function setAutoloadFrom($file)
{
self::$file = $file;
@ -23,7 +40,7 @@ class Load
}
self::$autoload = require(self::$file);
}
static public function autoload($class)
{
if (isset(self::$autoload[$class])) {
@ -35,16 +52,16 @@ class Load
self::buildAutoload();
}
if (isset(self::$autoload[$class])) {
require(PATH . self::$autoload[$class]);
require(PATH . self::$autoload[$class]);
}
}
}
static public function getFilePath($class)
{
return self::$autoload[$class];
}
static protected function buildAutoload()
{
ignore_user_abort(true);
@ -52,12 +69,11 @@ class Load
if (!file_exists($dir) && !mkdir($dir)) {
trigger_error('Can\'t create directory: "' . $dir . '"', E_USER_ERROR);
}
$scan = array(PATH . '/' . APP . '/src', PATH . '/lib');
require_once(PATH . '/lib/core/util/AutoloadBuilder.php');
$builder = new AutoloadBuilder(self::$file, $scan);
$builder = new AutoloadBuilder(self::$file, $scan, self::$exclude);
$builder->build();
ignore_user_abort(false);
}