Zend Framework в Magento
В прошлом году на одном из IRC каналов сообщества Zend Framework разгорелась длинная дискуссия о том, является ли Magento приложением, построенным на Zend Framework. Мы участия в обсуждении не принимали, и узнали о нем лишь через некоторое время. Но постараемся восполнить этот пробел сейчас.
Небольшая историческая справка:
Zend Framework:
Zend Framework (framework.zend.com) – современная, объектно-ориентированная библиотека для построения приложений на PHP 5. Создание Zend Framework было впервые публично анонсировано компанией Zend Technologies Inc. на Zend Conference в октябре 2005 года. Первая версия Zend Framework была выпущена 1 июля 2007 года.
Magento:
Первые идеи о создании собственной открытой платформы для создания ecommerce-сайтов появились в компании Varien в 2006 году. Новая платформа строилась по архитектуре MVC, с использованием ООП-возможностей пятой версии языка PHP, и ориентировалась на использование передовой на тот момент технологии, которую предоставляла новая библиотека от компании Zend. Первый внутренний альфа-релиз Magento состоялся весной 2007 года, тогда же было объявлено о планах по её выпуску, и 31 августа 2007 года была выпущена первая публичная бета-версия Magento.
Начало разработки:
Начиная разработку Magento, несмотря на то, что Zend Framework не был выпущен и находился лишь в стадии разработки, мы были восхищены подходом автором библиотеки и предоставляемыми возможностями уже в самых ранних версиях. Так как Zend Framework является open source библиотекой, уже после первого объявления был предоставлен публичный доступ к Subversion-репозиторию проекта.
На тот момент (напомним, что это было начало 2007 года), были реализованы основные компоненты Zend Framework, а остальные только разрабатывалось и не могли быть использованы для создания полноценного приложения.
Но у нас были свои планы, свой календарь разработки, и мы не могли ожидать, когда все компоненты Zend Framework будут закончены. Поэтому было принято решение включить библиотеку ZF в состав проекта, и стараться использовать её компоненты по максимуму, где это уже было возможно:
- Zend_Acl и Zend_Auth используются для управления пользователями контрольной панели
- Zend_Cache используется для реализации кеширования данных конфигурации, промежуточных данных и вывода
- Zend_Config использовался для работы с конфигурацией
- Zend_Controller использовался для роутинга, работы с входящими запросами и формирования ответа
- Zend_Db используется для работы с базой данных, динамического построения и модификации запросов к ней
- Zend_Filter с дополнительными собственными фильтрами применяется для предварительной обработки вывода
- Zend_Http используется для работы с внешними сервисами по HTTP-протоколу
- Zend_Json используется для работы с данными в JSON-формате, так как встроенные функции json_encode и json_decode появились в составе PHP только начиная с версии 5.2.0
- Zend_Locale используется для локализации Magento
- Zend_Mail используется для отправки исходящей почты
- Zend_Session использовался для работы с данными сессии пользователя
- Zend_Translate использовался для работы с переводами интерфейса Magento
- Zend_Validate для валидации входящих данных
Последующие изменения:
В процессе разработки пришлось отказаться от дальнейшего использования некоторых компонентов и создать собственную реализацию:
- Из-за специфики приложения и некоторых, на тот момент, проблем с производительностью, была реализована собственная система роутинга и контроллеров
- В связи с многоуровневостью системы хранения (конфигурационные файлы модулей, и значения настроек в базе данных) и сложного процесса сборки конфигурационных данными мы отказались от использования Zend_Config
- Для поддержки модульности и иерархии переводов были реализованы свои компоненты
В последующих версиях Magento стали ипользоваться также:
Какой же из этого можно сделать вывод ?
А вывод таков:
- Magento является приложением, построенным с использованием компонентов Zend Framework, что стало возможным благодаря принципу use-at-will, заложенному в архитектуру этой замечательной библиотеки.
- Magento, на данный момент, не является приложением, построенным на Zend Framework, так как мы используем собственную логику компонентной архитектуры приложения и системы обработки запросов, взамен стандартной реализации, предоставляемой Zend Framework.
Планы на будущее
Zend Framework не стоит на месте, ведется его активная разработка, выпуск новых версий, содержащих всё больше и больше функциональности.
Последний, выпущенный на момент написания этой статьи, релиз Magento 1.3.2.2 включает в себя Zend Framework версии 1.7.2. Последняя доступная версия ZF – 1.8.4, которая уже интегрирована в Magento trunk и в данный момент тестируется. Вполне возможно, что следующий релиз Magento будет включать в себя еще более новый Zend Framework, выпуск версии 1.9.0 которого планируется в конце июля этого года.
Написать комментарий