目录:
myproject:
src:
MyProject:
Foo:
Foo.php
在文件autoload_namespaces.php 中
return array(
'MyProject' => array($vendorDir . '/myproject/src'),
);
如果声明如下:
class Bar extends MyProjext'Foo'Foo
{
}
或:
use MyProjext'Foo'Foo;
class Bar extends Foo
{
}
它起作用了,但我想声明不使用"use MyProjext''Foo''Foo;"或"扩展MyProjext''Foo''Foo">
class Bar extends Foo
{
}
这是一个错误:"找不到Foo类",有人能帮我吗?
你说:
它起作用了,但我想声明不使用"use MyProjext''Foo''Foo;"或"扩展MyProjext''Foo''Foo">
这意味着这是有效的:
use MyProject'Foo'Foo;
class Bar extends Foo
{
}
但这不起作用(你想让它起作用(:
class Bar extends Foo
{
}
它不起作用,因为类Bar
正试图从全局范围扩展类Foo
,但类Foo
是在MyProject'Foo
命名空间下声明的,并且它存储在MyProject/Foo
目录中,所以错误正在发生,这是合乎逻辑的。
如果你想使用这个代码(没有任何namespace
(:
class Bar extends Foo
{
}
然后确保类Foo
在全局命名空间中可用,并在Foo
类声明之前找到一行类似namespace MyProject'Foo;
的行,删除该行,还包括类Foo
,然后使用它(通过扩展(创建类Bar
。所以,它可能看起来像这样:
// You may need to adjust the path
require_once("MyProject/Foo/Foo.php");
class Bar extends Foo
{
}
使用namespace
更好,所以尽量坚持使用它,如果没有namespace
,除非你在不使用namespace
的情况下重写它,否则你当前的autoloading
技术可能会失败。