symfony4 Внедрение зависимостей в трейт. trait. dependency injection.
Primary tabs
В Symfony рекомендуется внедрять зависимости для использования в классе через конструктор - заполняя необходимыми объектами поля.
Как же инициализировать объект зависимости в трейте, если он не инициализирован в классе, использующем трейт?
Решение
Добавим в трейт сеттер с аннотацией @required:
<?php namespace App\Controller; use App\Entity\User; use Symfony\Component\Security\Core\Security; /** * Трейт для работы с авторизованым пользователем */ trait AuthorizedUserTrait { /** * @var Security */ private $security; /** * @param Security $security * * @required */ public function setSecurity(Security $security) { $this->security = $security; } /** * @return User */ private function getAuthorizedUser(): User { return $this->security->getUser(); } }
Возможно Вам сможет помочь какой-то другой метод.
Источники
- Log in to post comments
- 2219 reads