3

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

控制器在 \Core,索引在 \Public

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

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

<?php
namespace Panel\Pub;

class Index extends Controller {

有没有办法解决这个问题,所以我可以在扩展函数中使用类别名?我知道我可以使用 \Core\Controller 并且它会起作用,但我正在尝试使用别名来使核心功能更易于访问。

编辑:找到一种解决方法 在进行了更多测试后,我发现在扩展中的别名前使用 \ 似乎可行。不如 no 理想,但目前最好的解决方案是:

class Index extends \Controller { }

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

谢谢!

4

1 回答 1

4

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

class Index extends \Public\Controller { }

\代表命名空间的根。


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

namespace Panel\Pub;
use \Public\Controller as Controller
class Index extends Controller { }
于 2013-11-13T02:19:54.287 回答