0

PHPのオートローディングで足を濡らしています。基本的なことはできたと思いますが、それでもうまくいきません。

次のディレクトリ構造を取得しました。

myLib
    -bootstrap.php
    -sven
        -project
            project.php

bootstrap.phpライブラリを使用するために含まれるファイルです。このファイルには、次のコードが含まれています。

spl_autoload_extensions('.php');
spl_autoload_register();

$var = new \sven\project\project();
$var->init();

そしてでproject.php

namespace sven\project;

class project {
    public function init() {
        echo 'It works!';
    }
}

私の理解では、オートローダーの使用方法は、コア PHP オートローダーが名前空間をディレクトリに変換してから、そのクラスを含む php を探す必要があるということです。

'It works!' を表示する代わりに、致命的なエラーがスローされます。残念ながら、CMS は致命的なエラーが発生したことを通知するだけなので、そのエラーが何であるかを正確に知ることはできません。
しかし、このような単純な構造では、エラーは非常に基本的であり、それがどのように機能するかを知っている人にとっては簡単に見つけることができると確信しています.

この例のどこが間違っていますか? このセットアップでオートローダーがどのように動作するかを正しく説明しましたか、それとも誤解がありますか?

EDIT:最後にエラーログを実行しました:

Fatal error: Class undefined: sven\\project\\project\\project\\project in /xxx/bootstrap.php on line 36

それは明らかに間違っているように見えますが、どうすればそれを変更できますか? バックスラッシュが 2 つあるのはなぜですか?

4

2 に答える 2

0

スヴェン、

spl_autoload に関する別の質問に回答しました。ここをクリックして例を試してください。

それが役立つことを願っています!

PS: また、パス上のすべての .php ファイルを自動ロードしないでください。危険です。

于 2015-05-28T18:29:10.667 に答える