Имеет ли модульный подход Zend framework хорошую логику?

Фреймворк Zend довольно быстро развивается, мы все согласны, и все мы были удивлены, когда опробовали модульную структуру Zend Framework, если говорить конкретно о начальной загрузке модулей - все файлы начальной загрузки модулей выполняются в начале, независимо от того, если мы используем/получаем доступ к этому модулю или нет. Насколько я помню, начальная загрузка модуля выполняется как плагин к основному загрузчику. Но, с другой стороны, я нахожу реализацию ZF очень сложной и написанной с большим уважением к шаблонам проектирования.

Поэтому, прежде чем идти и спотыкаться о модуле Lazy Load/Bootstrap, я хотел бы объективно подумать об аспекте начальной загрузки.

-- Итак, имеет ли первоначальная загрузка модуля в ZF твердую логику или ее следует изменить на что-то вроде ленивой загрузки/загрузки по запросу?

Я знаю, что вопрос довольно неявный, поэтому позвольте мне дать еще немного

например, в модульном приложении мы хотим иметь отдельные начальные конфигурации для каждого модуля (например, отдельный макет), а начальная загрузка — это парадигма «места для выполнения начальных конфигураций», верно? Но если мы разместим инициализацию/конфигурацию так, как говорит Zend Documentation, то наше приложение загрузит все инициализации, которые были настроены в каждом классе начальной загрузки модуля для каждого запроса. будет выполняться, хотя и в фоновом режиме) - это изрядно засоряет систему.

насколько я вижу, есть два пути, по которым идея может течь

  1. иметь в модуле начальной загрузки вещи, которые только дополняют всю систему (почти не вижу, что это может быть)
  2. Чтобы изменить способ загрузки модулей с помощью плагина help Action или расширения класса Bootstrap, который занимается ускорением начальной загрузки madule

И мой первоначальный вопрос заключался в том, есть ли какая-то логика в том, чтобы следовать первому варианту, и будет ли второй вариант хорошим выбором?


person simple    schedule 24.02.2010    source источник


Ответы (1)


да. Он основан на процессе отправки. Вы не можете сказать, какой из них вам понадобится во время начальной загрузки. Начальная загрузка модулей имеет одно преимущество: вам не нужно вставлять код модуля в основную начальную загрузку — это делает модули более «автономными».

Модуль зависит от

  • запрос
  • выбранный маршрут
  • если для напр. _forward() был вызван

Но вы можете захотеть добавить свои маршруты для каждого модуля, внедрить свой собственный disatcher и т. д. И все это нужно сделать до создания объекта запроса. Вот почему все бутстрапы инициируются в начале.

В идеальном случае ваш бутстрап не должен содержать повторяющийся код или создавать серьезные накладные расходы. Вы можете получить ресурсы из других инициированных загрузчиков, чтобы не было копий объектов, таких как адаптер базы данных или представление.

person Tomáš Fejfar    schedule 24.02.2010
comment
Вы можете получить ресурсы из других инициированных загрузчиков, чтобы не было копий объектов, таких как адаптер базы данных или представление. - кстати, как вы получаете ресурсы, которые были инициированы в другом (основном) загрузчике внутри модуля Bootstrap, потому что я не смог получить ресурс макета внутри административного модуля - person simple; 25.02.2010
comment
Вы не можете сделать $this-›getResource('layout')? Это меня удивляет. Не то чтобы я пробовал это, но я ожидал, что это сработает именно так... извините за ошибку :) - person Tomáš Fejfar; 25.02.2010