php:使用带有类别名的扩展

标签 php namespaces extends aliases

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

Controller 在\Core, 索引在\Public

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

我的问题是当我尝试扩展类(class)时。由于 Index 和 Controller 位于不同的命名空间中,它会尝试在\Public 命名空间中查找 Controller,因此这不起作用:

<?php
namespace Panel\Pub;

class Index extends Controller {

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

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

class Index extends \Controller { }

仍在寻找有关变通方法或扩展 Controller 的不同方法的其他建议。

谢谢!

最佳答案

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

class Index extends \Public\Controller { }

\ 代表您的命名空间的根。


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

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

关于php:使用带有类别名的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19943995/

相关文章:

php - 使用 Office365 oauth api 中的 oauth token 检索用户信息

php - 如何仅显示 mysql_fetch_array 中的某些字符

ruby - 将 Ruby gem 加载到用户定义的命名空间中

JavaScript - 类在条件下扩展

java - 没有确定主要方法?

php - 获取产品变体属性值术语 ID 和名称

php - 在表单上使用 php 和 POST,但 request_method 说它是 GET

C++ 使用关键字

c++ - 命名空间包含会增加exe的大小吗

php - 我可以在 PHP 中使用多个类来扩展一个类吗?