我正在尝试级联扩展通过class_alias
注册的类。我得到一个“无法重新声明课程”的警告,我想知道我想做什么甚至可以用PHP。
我的目标是能够创建一个继承的“链”。 One\one
是基类,Two\one
对此进行了扩展,但也将One\one
替换为别名的类。
这样,任何数量的类都可以扩展特定命名空间中的主类,而无需了解链中其他类已经扩展的其他类。
one.php
namespace One;
class_alias('One\one', 'one');
class one {}
two.php
namesapce Two;
class_alias('Two\one', 'one');
class one extends \one{}
的index.php
<?php
require('one.php');
require('two.php');
$instance = new \one();
var_dump($instance);
答案 0 :(得分:1)
在同一名称空间中不能有两个具有相同名称的类。您正尝试通过one
调用在全局命名空间中为名称class_alias
分配两次。
您正在使用命名空间,然后尝试绕过它们。有什么需要这样做?