サイトを検索した後、ネームスケープを前に付けてクラスをインスタンス化するか、クラスファイルでネームスケープをコメントアウトしない限り、クラスが見つからないという致命的なエラーが発生する理由がわかりません。私はPSR-0を使用して、この問題をうまく解決しようとしています.
オートローダー コード:
function autoload($className)
{
$className = ltrim($className, '\\');
$fileName = '';
$namespace = '';
if ($lastNsPos = strrpos($className, '\\')) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
require $fileName;
}
spl_autoload_register('autoload');
3 つのファイルすべて (Autoloader.php、Class.php、index.php) のパスは、すべて同じディレクトリ レベルにあります。サブディレクトリなどはありません。
オートローダー コードは、require_once("Autoloader.php"); を使用して index.php の先頭に実装されます。
クラスは $foo = new classFoo(); で呼び出されます。
tl;dr バージョン:
- 呼び出されているクラスのネームスケープ宣言をコメントアウトしていますか? 正常に動作します。
- 名前空間/クラス形式を使用してクラスをインスタンス化していますか? 正常に動作します。
- さもないと?致命的なエラー: クラスが見つかりません (同じディレクトリにあるにもかかわらず.