PSR-0 互換クラス ローダーは PEAR ライブラリもロードできるようにする必要がありますか?
はい、PSR-0 は、クラスおよびファイルの PEAR 命名規則と相互運用可能です。
これはもはや公的に文書化されていませんが、一般的に知られています。
クラスをロードできない場合、オートローダーは PSR-0 に準拠していません。
仕様を再確認してください。SplClassLoader
そこにリンクされている PSR-0 互換のクラスもあり、独自のクラスの代わりに使用できます。
おそらくより良いローダーはThe Symfony2 ClassLoader Componentです。Pear または Composer ( Packagist の symfony/class-loader )を介して簡単にインストールできます。
独自のクラスローダを作成する場合は、慎重に作業してspl_autoload_register
ください。 を参照してください。
ボーナス機能:
PHP と同じようにspl_autoload_register
動作させるには、インクルード パスに PSR-0 解決を使用します。
$spl_autoload_register_psr0 = function ($extensions = null) {
$callback = function ($className, $extensions = null) {
if (!preg_match('~^[a-z0-9\\_]{2,}$~i', $className)) {
return;
}
null !== $extensions || $extensions = spl_autoload_extensions();
$extensions = array_map('trim', explode(',', $extensions));
$dirs = array_map('realpath', explode(PATH_SEPARATOR, get_include_path()));
$classStub = strtr($className, array('_' => '/', '\\' => '/'));
foreach ($dirs as $dir) {
foreach ($extensions as $extension) {
$file = sprintf('%s/%s%s', $dir, $classStub, $extension);
if (!is_readable($file)) {
continue;
}
include $file;
return;
}
}
};
return spl_autoload_register($callback);
};
var_dump(get_include_path());
var_dump(spl_autoload_extensions());
var_dump($spl_autoload_register_psr0());