Я отправил еще один question, пытаясь найти способ статического доступа к классу репозитория вне контроллера в пользовательском классе «помощник».Syfmony - загрузить сервис при загрузке
Пока единственный способ, которым я понял, как это сделать, - использовать приведенный ниже код. Если кто-то хочет перезвонить в другой вопрос о «лучшей практике» или «шаблонах дизайна», пожалуйста, сделайте это.
Я открыл этот вопрос, чтобы найти наилучший метод использования однопользовательской службы (?), Загружаемой при загрузке Symfony, чтобы другие классы могли обращаться к ней статически без какой-либо инъекции зависимости. Мне не повезло найти какие-либо официальные документы или обычную практику. Я знаю, что синглтон - это анти-практика, но метод ниже наилучшего, или есть более идеальное решение?
services.yml
parameters:
entity.device: Asterisk\DbBundle\Entity\Device
services:
asterisk.repository.device:
class: Asterisk\DbBundle\Entity\Repositories\DeviceRepository
factory: ["@doctrine.orm.asterisk_entity_manager", getRepository]
arguments:
- %entity.device%
tags:
- {name: kernel.event_listener, event: kernel.request, method: onKernelRequest}
DeviceRepository
class DeviceRepository extends \Doctrine\ORM\EntityRepository
{
/** @var ExtendedEntityRepository */
protected static $instance;
public function __construct(EntityManager $entityManager, ClassMetadata $class)
{
parent::__construct($entityManager, $class);
if(static::$instance instanceof static == false)
static::$instance = $this;
}
public static function getInstance()
{
return static::$instance;
}
public function onKernelRequest($event)
{
return;
}
}
Не могли бы вы немного подробнее проинформировать службу репо в прослушиватель ядра? Вы говорите, что я делаю хорошо, но я должен вводить один слушатель ядра, а не каждый репо, являющийся слушателем ядра (например, мой примерный код выше)? – StrikeForceZero
Используете ли вы возможности слушателя, как средство настройки экземпляра однопользовательского хранилища? – Cerad
да, потому что я не знаю другого способа загрузить его, когда сапоги Symfony – StrikeForceZero