PHPにカスタムオートローダーがあります。検索パスは配列で設定されます。読み込み自体:
- $classname ロードされていないクラスの名前
- ディレクトリの $path
- $autoloadClassPaths [クラス名] => 絶対ファイル名
これは spl_autoload_register() 登録関数です!
if (!isset($autoloadClassPaths[$classname]))
{
foreach ($path as $dir)
{
foreach (new DirectoryIterator($dir) as $fileinfo)
{
if (substr($fileinfo->getFilename(), -4) == '.php')
{
$tokens = token_get_all(file_get_contents($fileinfo->getPathname()));
$count = count($tokens);
for ($i = 2; $i < $count; $i++)
{
if ( ($tokens[$i - 2][0] == T_CLASS || $tokens[$i - 2][0] == T_INTERFACE)
&& $tokens[$i - 1][0] == T_WHITESPACE
&& $tokens[$i][0] == T_STRING)
{
$autoloadClassPaths[$tokens[$i][1]] = $fileinfo->getPathname();
}
}
}
}
}
}
else
{
require ($autoloadClassPaths[$classname]);
}
問題は、名前空間に遭遇したことです。これを自動ロードする方法は?