首页 文章

php:using使用类别名扩展

提问于
浏览
3

我有两个不同的命名空间中的类,例如:

控制器位于\ Core,Index位于\ Public

在我的index.php中,我有一个所有\ Core类的class_alias,所以你可以直接调用它们: $controller = new Controller(); . 这没有问题 .

我的问题是当我尝试扩展课程时 . 由于Index和Controller位于不同的命名空间中,它会尝试在\ Public命名空间中找到Controller,因此这不起作用:

<?php
namespace Panel\Pub;

class Index extends Controller {

有没有办法解决这个问题,所以我可以在extends函数中使用类别名?我知道我可以使用\ Core \ Controller它可以工作,但我正在尝试使用别名来使核心功能更容易访问 .

Edit: Found one workaround 在做了一些更多测试后,我发现在扩展中的别名前面使用\似乎有效 . 不像没有那样理想,但目前最好的解决方案是:

class Index extends \Controller { }

仍在寻找关于解决方案的其他建议或扩展控制器的不同方法 .

谢谢!

1 回答

  • 4

    在使用命名空间时,可以使用命名空间中的完整路径

    class Index extends \Public\Controller { }
    

    \ 表示命名空间的根 .


    另一种方法是使用 use 关键字

    namespace Panel\Pub;
    use \Public\Controller as Controller
    class Index extends Controller { }
    

相关问题