目录:
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
{
}
它工作,但我想声明不使用'使用MyProjext \ Foo \ Foo;'或者'扩展MyProjext \ Foo \ Foo'
class Bar extends Foo
{
}
这是错误:'没有找到Foo,有人可以帮助我吗?
答案 0 :(得分:1)
你说:
它工作,但我想声明不使用'使用MyProjext \ Foo \ Foo;'要么 '扩展MyProjext \ Foo \ Foo'
这意味着这有效:
use MyProject\Foo\Foo;
class Bar extends Foo
{
}
但是这不起作用(你想让它工作):
class Bar extends Foo
{
}
它不起作用,因为类Bar
正在尝试从全局范围扩展类Foo
,但类Foo
在MyProject\Foo
namespace下声明并且它存储在MyProject/Foo
目录中,因此错误正在发生,这是合乎逻辑的。
如果您想使用此代码(没有任何namespace
):
class Bar extends Foo
{
}
然后确保,类Foo
在全局命名空间中可用,并在namespace MyProject\Foo;
类声明之前找到类似Foo
的行,并删除该行并包含该类Foo
之前使用它(通过扩展)来创建类Bar
。所以,它看起来像这样:
// You may need to adjust the path
require_once("MyProject/Foo/Foo.php");
class Bar extends Foo
{
}
使用namespace
会更好,所以尽量不要使用namespace
当前的autoloading
技术可能会失败,除非您在不使用namespace
的情况下重写它。