php: использование расширений с псевдонимом класса
У меня есть классы в двух разных пространствах имен, например:
Контроллер находится в Core, Индекс находится в Public
В моем указателе.php, у меня есть class_alias для всех классов Core, поэтому вы можете вызвать их напрямую: $controller = new Controller();
. Это работает без проблем.
Моя проблема заключается в том, что я пытаюсь расширить класс. Поскольку Index & Controller находятся в разных пространствах имен, он пытается найти контроллер в пространстве имен Public, поэтому это не работает:
<?php
namespace PanelPub;
class Index extends Controller {
Есть ли какой-нибудь способ обойти это таким образом, я могу использовать псевдоним класса в функции extends? Я знаю, что могу использовать CoreController, и это будет работать, но я пытаюсь использовать псевдонимы, чтобы сделать основные функции более доступными.
Edit: найдено одно обходное решение Проведя еще несколько тестов, я обнаружил, что использование перед псевдонимом в расширении, кажется, работает. Не так идеально, как нет , но в настоящее время лучшее решение приводит к:
class Index extends Controller { }
Все еще ищу другие советы по обходу или другому методу работы. расширение контроллера.
Спасибо!
1 ответ:
Когда вы используете пространство имен, вы используете полный путь в вашем пространстве имен
class Index extends \Public\Controller { }
\
представляет корень Вашего пространства имен.
Другой способ сделать это-использовать ключевое слово
use
namespace Panel\Pub; use \Public\Controller as Controller class Index extends Controller { }