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

@ -20,14 +20,17 @@ class AutoloadBuilder
protected $dirs;
protected $exclude;
protected $handler;
protected $regex = '/(class|interface) ([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)/';
public function __construct($autoload, $dirs = array())
public function __construct($autoload, $dirs = array(), $exclude = array())
{
$this->autoload = $autoload;
$this->dirs = $dirs;
$this->exclude = $exclude;
}
public function build()
@ -42,6 +45,10 @@ class AutoloadBuilder
);
foreach ($iterator as $file) {
if($this->isExcluded($file->getRealPath())) {
continue;
}
// skip non php files
$e = explode('.', $file->getFileName());
if ((end($e) !== 'php') || $this->rightSubstr($file->getFileName(), 8) == 'Test.php') {
@ -68,6 +75,17 @@ class AutoloadBuilder
$this->closeAutoload();
}
protected function isExcluded($file)
{
foreach ($this->exclude as $dir) {
if (stripos($file, PATH . $dir) === 0) {
return true;
}
}
return false;
}
protected function openAutoload()
{
$this->write("<?php\n// This file is autogenerated by \n// " . __FILE__ . " script.\nreturn array(\n");