作 ▸
PHP 名前空間を使ったオートローダーを自作
いまさら自作する必要も無いと思いますが
PHP 7.1.9
対象のファイルが src
lib
どちらか以下にあれば読めるようになってます
ディレクトリ名と名前空間が対応してないところがある場合は、さらに自力で置換するロジックを入れる必要があります
<?php echo '<?php'; ?>
spl_autoload_register(function($class) {
// 先頭のバックスラッシュ除去
$class = ltrim($class, '\\');
// バックスラッシュを区切り文字に置換して.php付与
$classFile = str_replace('\\', DIRECTORY_SEPARATOR, $class).'.php';
// src, lib以下を探す
$dirNameList = ['src', 'lib'];
// クラスファイルがあれば読み込んで抜ける
foreach ($dirNameList as $dirName) {
$classFilePath = __DIR__.DIRECTORY_SEPARATOR.$dirName.DIRECTORY_SEPARATOR.$classFile;
if (is_file($classFilePath) && is_readable($classFilePath)) {
require_once $classFilePath;
return true;
}
}
return false;
});
これを書いたファイルを require
しておくと、まだ読み込んでないクラスを使おうとした時に自動で読み込むようになります