Содержание


Best Practices when Creating Modules


Best Practices when Creating Modules, ZF2, Zend Framework 2, ЗФ2


    .


 При создании модулей в ZF2 необходимо руководствоваться несколькими принципами, описанными ниже.

 

Методы «init()» и «onBootstrap()» должны быть легкими. Эти методы выполняются при каждом запросе к странице и не должны выполнять «тяжелых» задач. Хорошим тоном будет их использование для регистрации слушателей событий, так как эти действия не будут перегружать систему и процессор даже при наличии большого количества модулей  в Вашем приложении. Плохим тоном считается их использование для таких задач, как настройке экземпляров приложений, подключений к БД, использование регистраторов и почтовых программ. Подобные задачи лучше всего использовать через ServiceManager.

 

Также Вы никогда не должны использовать запись в файлы в пределах модуля. Любые настройки конфигурации должны быть выполнены путем переопределений, мз файлов конфигурации, вытяжкой из БД. Если же все таки есть необходимость производить запись в файлы, то это необходимо делать за пределами модуля.

 

Есть два главных преимущества из-за которых нужно следовать вышеописанному правилу. Первое – любой модуль, который будет пытаться совершать операции записи внутри себя не будет совместим с phar архивом. Второе – легкая, простая, безпроблемная синхронизация модуля, например, с Git или другими сервисами.

 

Еще одно правило -  это использование вендорного префикса для избежания конфликта имен. Например использовать название «ZendDeveloperTools», а не просто «DeveloperTools» или «Tools».

 

Так же правильным будет использование вендорных префиксов для имен служб (service). Если Вы определите службу в верхнем уровне Service Manager, то Вам будет предложено префикс для служб, состоящий из имени модуля + имя службы во избежания конфликта имен с различными службами других модулей.  Например, адаптер БД используемый в модуле «MyModule» должен называться «MyModuleDbAdapter», а не «DbAdapter». Если же возникла необходимость поделиться службами с другими модулями, то у вас есть возможность использовать псевдонимы («alias»), позволяющие переопределять фабрики в отдельных модулях. В иделае, каждый модуль должен определять свои собственные зависимости служб, но псевдонимы могут быть использованы на прикладном уровне для обеспечения общих служб в отдельных модулях, относящихся к одному экземпляру.


Автор статьи: DuB