Задать вопрос
@Vladislav_Aliev
Начинающий web-разработчик

Как использовать трейты с пространствами имен?

Есть, допустим, трейт:
<?php
namespace Traits;

trait MyTrate
{
    public function myTraitFunction()
    { 
        // code
    }
}

Если использовать его в классе:
<?php
namespace My\Name\Space;

class MyClass
{
    use Traits\MyTrate;
}

то оператор "use" использует пространство имен My\Name\Space\Traits\MyTrait. То есть не будет идти от корня, так как он использован в классе. Как же тогда использовать трейты, определенные в других пространствах имен?
В документации на php.net в одном из комментариев тоже про это написано, но не сказано как быть.
  • Вопрос задан
  • 255 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
class MyClass
{
    use \Traits\MyTrate;
}
Ответ написан
Комментировать
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
Надо ещё use объявить после namespace
https://github.com/Compolomus/SQLQueryBuilder/blob...
То есть вы по сути даёте автозагрузчику знать что грузить и можно сделать аллиас
Ещё вариант писать имя класса вместе с нэймспэйсом от корня
https://github.com/Compolomus/SQLQueryBuilder/blob...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы