псевдоним нескольких классов php с одним и тем же именем класса
Я пытаюсь каскадно расширить класс, зарегистрированный через 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);
1 answers
У вас не может быть двух классов с одинаковым именем в одном пространстве имен. Вы пытаетесь дважды назначить имя one
в глобальном пространстве имен с помощью вызовов class_alias
.
Вы используете пространства имен, а затем пытаетесь обойти их. Зачем это нужно делать?