我有两个不同名称空间的类,例如:
控制器位于\ Core, 索引位于\ Public
在我的index.php中,我有一个用于所有\ Core类的class_alias,因此您可以直接调用它们:$controller = new Controller();
。这没有问题。
我的问题是当我尝试扩展课程时。自索引& Controller位于不同的名称空间中,它试图在\ Public名称空间中找到Controller,因此这不起作用:
<?php
namespace Panel\Pub;
class Index extends Controller {
有没有办法解决这个问题,所以我可以在extends函数中使用类别名?我知道我可以使用\ Core \ Controller它可以工作,但我正在尝试使用别名来使核心功能更容易访问。
编辑:找到一种解决方法 在做了一些更多测试之后,我发现在扩展中的别名前面使用\似乎有效。不像没有那样理想,但目前最好的解决方案是:
class Index extends \Controller { }
仍在寻找有关解决方案的其他建议或扩展控制器的不同方法。
谢谢!
答案 0 :(得分:4)
当您使用命名空间时,使用命名空间中的完整路径
class Index extends \Public\Controller { }
\
代表命名空间的根。
另一种方法是使用use
关键字
namespace Panel\Pub;
use \Public\Controller as Controller
class Index extends Controller { }