私はPHPの名前空間について学び、単純な自動ロード機能を作成し始めました。Oがしたことは:
function __autoload($name) {
echo $name . "<br />";
require_once $name . ".php";
}
したがって、エイリアスまたはインポートステートメントを使用しない場合、これは機能します。use MainNamespace\Subnamespace
私がそれをした場合、私が持っていると仮定するからです:
\GreatApp\Models\User.php
\GreatApp\Models\Project.php
\GreatApp\Util\Util.php
\GreatApp\Util\Test\Test.php
私がやろうとすると:
new GreatApp\Models\User();
$name
オートロードではそうなるGreatApp\Models\User
ので動作しGreatApp\Models\User.php
ます。しかし、私がするとき:
use GreatApp\Models;
new User();
それは失敗します。なぜなら、今$name
は公正User
であり、User.php
見つからないからです。では、オートローディングをどのようにセットアップすればよいですか?