我有一个基础抽象类,比如 Base.php
位于 /lib/Helper/Base.php
.现在,我还有一个类(class),比如说 Awesome.php
位于 /lib/Helper/Awesome/Awesome.php
, 这个类需要扩展 Base
.
我已经定义了我的命名空间如下:
Base.php
<?php namespace Helper;
abstract class Base
{
}
Awesome.php
<?php namespace Helper\Awesome;
class Awesome extends Base
{
}
现在,这表示类
Base
没有找到。我尝试使用 require_once
和/或 include
到Base.php
的路径他们也没有工作。我究竟做错了什么?
最佳答案
您正在包含该文件,这是正确的做法。但你也在使用
命名空间。
命名空间不是文件夹,这意味着命名空间“Helper”不是文件夹而是逻辑层次结构。为了使用类Base
在他逻辑 命名空间 Helper
Awesome
类需要使用完整的逻辑路径扩展基类,即 \Helper\Base
.
namespace Helper\Awesome;
class Awesome extends \Helper\Base {
}
或使用
use/as
关键字代替(如 c# using
语句)。 namespace Helper\Awesome;
use \Helper\Base as Base;
class Awesome extends Base
{
}
更多信息可以在 php.net 站点上找到。
这里是直接引用:http://php.net/manual/en/language.namespaces.importing.php
关于PHP 扩展一级文件夹返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26661827/