Задать вопрос
27cm
@27cm
TODO: Написать статус

Как работают и зачем нужны ленивые сервисы в Zend Framework 2?

Объясните, как работают и для чего используются Lazy Services в ZF2? Прочитал документацию, но что-то полное понимание пока не пришло. Если подкинете, конкретные примеры, стать или литературу, где об этом написано подробнее, буду благодарен.

framework.zend.com/manual/current/en/modules/zend....
  • Вопрос задан
  • 2702 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
"ленивая загрузка" - то есть использование объекта при необходимости, если надо будет, она возьмёт объект и загрузит его. В ZF2 это всё дело разруливается через ServiceManager с типом конфигурации invokables, там вы можете помещать как непосредственно классы, так и службы (по сути одно и тоже, только семантика разная). Например, вы создали какую то уникальную обработку данных для какого то конкретного случая, и вы хотите её использовать в своём модуле, или даже в конкретном контроллере какого то модуля (а потом оказалось, что вам её нужно ещё где-то использовать). И вот как раз на помощь приходит "ленивая загрузка", где вам нужно класс с уникальной обработкой данных указать в конфигурационном файле. Теперь, как только вашему приложению понадобится этот функционал (например пользователь запросил какие то ресурсы, которые обрабатываются на сервере именно вашей уникальной обработкой данных), то он (ServiceManager) возьмёт этот класс, то есть при необходимости подгрузит. К стати, как я выше писал в скобках, что возможно вам понадобится ещё где-то использовать, то вы можете ещё дальше пойти, то есть уже в конфигурационном файле указать тип factories, где поместить ранее созданный класс фабрики реализованный с помощью FactoryInterface, и после чего класс с уникальной обработкой данных будет создан независимо от возможных требований лишь тогда, когда он был первый раз вызван, а дальше вы его можете использовать на уровне всего приложения. То есть в одном месте объявили, вызвали его, а дальше вызываете его где угодно и сколько угодно. Стоит заметить, что при повторном вызове, возвращается один и тоже объект, и если вам всё таки понадобится новый объект для какого то конкретного случая, то нужно сделать кое какую поправку, и вы получите новый объект.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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