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和调用write方法
输出:
src\com\b\Bar
src\com\b\Foo
但是当我尝试和自动加载它认为Foo在src/com/b的命名空间中,因为这是Bar的命名空间,因此它不会加载。
有关如何解决此问题的任何想法?
D'哦,对于谢谢:) – TheStoneFox 2012-02-19 16:25:52