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 3

1 ответ:

Когда вы используете пространство имен, вы используете полный путь в вашем пространстве имен

class Index extends \Public\Controller { }

\ представляет корень Вашего пространства имен.


Другой способ сделать это-использовать ключевое слово use

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