0
私はPhp5.3で名前空間を使用してオートロードを実装しようとしていますが、何か問題があり、なぜ動作しないのかわかりません。PHPの異なるパス名スペースとオートロードが動作しない
私は
/root
--bootstrap.php
--test.php
--/src
----/com
------/a
--------Foo.php
------/b
--------Bar.php
bootstrap.phpの
<?php
function __autoload($class) {
// convert namespace to full file path
echo $class.'<br>';
$class = str_replace('\\', '/', $class) . '.php';
require_once($class);
}
Foo.php
<?php
namespace src\com\a {
class Foo {
public function write() {
echo "write";
}
}
}
Bar.php
<?php
use \src\com\a\Foo;
namespace src\com\b {
class Bar {
public function write() {
$foo = new Foo();
$foo->write();
}
}
}
の基本的なディレクトリ構造を持っています
test.phpを
<?php
use \src\com\b\Bar;
require_once("bootstrap.php");
$bar = new Bar();
$bar->write();
だから基本的な前提は、順番にはFooを含んでおり、書き込み方法
出力呼び出すコールバー、次のとおりです。
src\com\b\Bar
src\com\b\Foo
をしかし、私はそれを試してみて、自動ロードするときそれがBarの名前空間であるため、Fooがsrc/com/bの名前空間にあると考えて、ロードしません。
これを修正する方法についてのご意見はありますか?
D'ああ、ありがとう:) – TheStoneFox