Add support symlink into Autoload.
This commit is contained in:
1
Load.php
1
Load.php
@ -79,6 +79,7 @@ class Load
|
|||||||
|
|
||||||
if (!self::$builder) {
|
if (!self::$builder) {
|
||||||
require_once(PATH . '/lib/core/util/AutoloadBuilder.php');
|
require_once(PATH . '/lib/core/util/AutoloadBuilder.php');
|
||||||
|
require_once(PATH . '/lib/core/util/AsciiSortedIterator.php');
|
||||||
self::$builder = new AutoloadBuilder(self::$file, $scan, $exclude);
|
self::$builder = new AutoloadBuilder(self::$file, $scan, $exclude);
|
||||||
}
|
}
|
||||||
self::$builder->build();
|
self::$builder->build();
|
||||||
|
18
util/AsciiSortedIterator.php
Normal file
18
util/AsciiSortedIterator.php
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
class AsciiSortedIterator extends SplHeap
|
||||||
|
{
|
||||||
|
public function __construct(Iterator $iterator)
|
||||||
|
{
|
||||||
|
foreach ($iterator as $item) {
|
||||||
|
$this->insert($item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public function compare($b,$a)
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var $a SplFileInfo
|
||||||
|
* @var $b SplFileInfo
|
||||||
|
*/
|
||||||
|
return strcmp($a->getPath() . DIRECTORY_SEPARATOR . $a->getFileName(), $b->getPath() . DIRECTORY_SEPARATOR . $b->getFileName());
|
||||||
|
}
|
||||||
|
}
|
@ -38,10 +38,10 @@ class AutoloadBuilder
|
|||||||
$classes = array();
|
$classes = array();
|
||||||
foreach ($this->dirs as $dir) {
|
foreach ($this->dirs as $dir) {
|
||||||
$iterator = new RecursiveIteratorIterator(
|
$iterator = new RecursiveIteratorIterator(
|
||||||
new RecursiveDirectoryIterator($dir),
|
new RecursiveDirectoryIterator($dir, FilesystemIterator::FOLLOW_SYMLINKS | FilesystemIterator::SKIP_DOTS),
|
||||||
RecursiveIteratorIterator::LEAVES_ONLY
|
RecursiveIteratorIterator::LEAVES_ONLY
|
||||||
);
|
);
|
||||||
|
$iterator = new AsciiSortedIterator($iterator);
|
||||||
foreach ($iterator as $file) {
|
foreach ($iterator as $file) {
|
||||||
/**
|
/**
|
||||||
* @var SplFileInfo $file
|
* @var SplFileInfo $file
|
||||||
@ -58,7 +58,7 @@ class AutoloadBuilder
|
|||||||
$content = file_get_contents($file->getRealPath());
|
$content = file_get_contents($file->getRealPath());
|
||||||
$matches = array();
|
$matches = array();
|
||||||
|
|
||||||
$relative_path = substr($file->getRealPath(), strlen(PATH));
|
$relative_path = substr($file->getPath() . DIRECTORY_SEPARATOR . $file->getFilename(), strlen(PATH));
|
||||||
|
|
||||||
if (preg_match_all($this->regex, $content, $matches, PREG_SET_ORDER)) {
|
if (preg_match_all($this->regex, $content, $matches, PREG_SET_ORDER)) {
|
||||||
foreach ($matches as $match) {
|
foreach ($matches as $match) {
|
||||||
|
Reference in New Issue
Block a user