こうこく
作 ▸

PHP 名前空間を使ったオートローダーを自作

いまさら自作する必要も無いと思いますが

PHP 7.1.9

対象のファイルが src lib どちらか以下にあれば読めるようになってます

ディレクトリ名と名前空間が対応してないところがある場合は、さらに自力で置換するロジックを入れる必要があります

autoload.php
<?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 しておくと、まだ読み込んでないクラスを使おうとした時に自動で読み込むようになります

この記事に何かあればこちらまで (非公開)