*Перевод статьи
Вернемся в май 2015-го, когда разработчики анонсировали разработку новой архитектуры Prestashop, внедрение которой началось с первых строк кода версии 1.6.1.0, вышедшей раньше июля 2015? Да, это было забавно. Сейчас готовится обновление 1.7, пришло время посвятить вас в дальнейшие планы разработчиков по поводу новой архитектуры.
Многое изменится относительно релиза 1.6.1.0. Попробуем перечислить основные пункты.
- Prestashop 1.7 будет открывать внедрение архитектуры, построенной на фреймворке Symfony с системой шаблонов Twig.
- На данный момент планируется использовать новую архитектуру только в back-office (панели администратора). К тому же для готовящегося релиза это будут только 2 раздела: товары и модули.
- Остальные разделы back-office сохранят прежнюю архитектуру версий 1.5 — 1.6, но они изменятся в более поздних версиях Prestashop.
- Только модули, которые связаны со страницами Товаров и Модулей back-office нуждаются в адаптации к новой версии Prestashop.
Читайте дальше, будет еще интересней.
Почему Prestashop нужна новая архитектура?
Prestashop 1.5, вышедшая в середине 2012, имела огромные изменения базового кода. Изменения включали систему мультимагазин, переработанный модуль API, изменения в ядре (изменен код многих классов для большего соответствия модели MVC). Это было значительное изменение, и после нескольких месяцев “отшлифовки” новшеств сообщество приняло их без колебаний.
Prestashop 1.6, вышедший в марте 2014, сохранил бОльшую часть архитектуры 1.5. Конечно, он внедрял переработки back- и front- офиса, связанные с внедрением Bootstrap, к тому же несколько значительных изменений, таких как back-office Dashboard (панель админ. панели) с KPI (Key Performance Indicators, KPI — система оценки, которая помогает организации определить достижение стратегических и тактических целей — графики, диаграммы). Но исходный код мало отличался от версии 1.5. Приятно было сообщить сообществу, что их модули и темы будут работать с новой версией движка по прежнему, по крайней мере без значительных изменений.
Все было прекрасно и замечательно, но даже версия 1.5 показала, что ее исходный код мог бы использовать больше современных подходов и решений.
Конечно, он всё еще работал как ожидалось от версии 1.6, но уже обнаруживал слабые места то здесь, то там.
В 2015, когда еще велись работы над версией 1.6 (которые привели нас к версии 1.6.1.0), разработчики приняли решение: код Prestashop должен стать более структурированным и защищенным, более модульным и полноценно тестируемым. Это невозможно было сделать на базе кода версий 1.5 — 1.6. Это решение привело к началу изменений исходного кода в версии 1.6.1.0 и подготовке выхода версии 1.7, в которой разработчики полноценно начали внедрять новую архитектуру.
Был сделан выбор: Prestashop 1.7 будет содержать фреймворк Symfony2 в ядре своего исходного кода. Это будет крутой поворот для технической стороны платформы Prestashop, но он будет проходить постепенно и в течение длительного времени. Не все изменения будут внесены в версиях 1.7.
Почему было решено внедрить фреймворк вместо оптимизации собственного кода движка?
Пришло время отказаться от существующего в Prestashop долгое время кустарного фреймворка (авторы используют термин “home-made”), который недостаточно оптимально исполняет стандартные функции вроде заказа товаров, поддержка которого занимает много времени, и который не является теми особенными функциями, на которых следовало бы больше сфокусироваться разработчикам prestashop.
Использование проверенного и популярного фреймворка дает возможность разработчикам совершенствовать специальные части движка, позволив при этом пользователям наслаждаться стабильной работой признанного фреймворка.
Почему был выбран Symfony2?
Потому что это Symfony2, новый стандарт PHP! (Шутит автор статьи). Действительно, этот фреймворк признан многими передовым по качеству кода и наиболее популярен.
Также мы рассматривали другие варианты:
- Lumen/Laravel:
- Использует компоненты Symfony, фактически одна из модификаций;
- Он содержит множество элементов которые не являются необходимыми данному проекту в настоящее время.
- Silex:
- Это миниатюрный фреймворк, который не отвечает нуждам проекта.
- Нет эффективного механизма описания путей.
- Базируется на устаревших компонентах Symfony, а также нескольких компонентах помимо нее.
- Slim framework:
- Небольшой фреймворк, больше подходит для небольших проектов.
- Он поддерживается очень небольшой командой разработчиков, не было ни одного изменения в этом году и всего несколько в прошлом.
- Часто нарушается ретро-совместимость (со старыми версиями).
- Zend framework:
- Большой конкурент для Symfony, но его популярность, действительно, падает.
- К тому же Zend недостаточно расширяем, он сразу пришел на рынок как “Монолит”.
- Yii framework:
- Это так же монолитный фреймворк.
- Сообщество невелико. FНайти квалифицированных разработчиков будет очень трудно, как для команды Prestashop, так и для Prestashop студий.
Какая часть Prestashop будет переписана с использованием Symfony?
Prestashop 1.7 не будет 100% построена на Symfony, в действительности, только раздел исходного кода будет использовать фреймворк.
Будет ли Smarty заменен на Twig?
Twig это язык шаблонов фреймворка Symfony. В версии 1.7, он будет использоваться для всех страниц, которые были модернизированы с использованием Symfony. (Товары и Модули),но НЕ для глобальных интерфейсов (меню, хедер, и т.д.), не на неизменных страницах без Symfony, которые по-прежнему будут использовать Smarty. Два механизма шаблонов будут доступны, от версии к версии, в течении фазы преобразований. В конце концов, все страницы back-office планируется перевести на Twig.
Будут ли поддерживаться модули 1.6 в версии 1.7?
В prestashop 1.7 Symfony будет использоваться только для back-office. Следовательно, последствия обновления до 1.7 для разработчиков модулей, будут ограничены адаптацией хуков разделов Товары и Модули. Модули, связанные с другими разделами в изменениях не нуждаются.
Разработчикам модулей нет необходимости разрабатывать модули на Symfony, интерфейс ядра останется тем же, и Smarty всё еще будет использоваться на неизменных страницах. Будет необходимо использовать шаблонизатор Twig для измененных страниц, но код ядра модуля может остаться таким же.
Для страницы редактирования/настроек товара, в частности, разработчики предоставят переключатель, который позволит запускать страницу либо с использованием Стандартной/Smarty версии, либо Symfony/Twig версии. Да, они будут вне нового движка, но это позволит модулям версии 1.6, связанным со страницами Товаров и Модулей работать в версии 1.7. Это даст больше времени разработчикам, чтобы адаптировать их модули к версии 1.6
Будут ли темы 1.6 работать в Prestashop 1.7?
PrestaShop 1.7 включает переосмысленный механизм работы тем. Это не связано с новой архитектурой и Symfony, но связано с новой концепцией тем, созданной разработчиками, и следующими отсюда изменениями.
Следовательно, темы из 1.6 НЕ будут работать на Prestashop 1.7: логический код будет полностью отделен от темы, контроллеры не отправляют массивы объектов, тема остается неизменной, CSS используются только для стилей, больше не используется Bootstrap, и т.д.. Новая стратегия построения тем в 1.7, заключается в наличии центральной темы, разработчикам будет доступно построение собственных тем (видоизменение основной темы) на основе исходной базовой темы, что позволит сообществу создавать надежные яркие темы адаптирующиеся темы и легко ими обмениваться.
FAQ…?
У Вас осталась масса вопросов по Prestashop 1.7? Разработчики создали отдельный форум для обсуждения вопросов по этой версии. Думаю, скоро мы… все там будем.
Оригинал статьи: http://build.prestashop.com/news/prestashop-1-7-and-symfony/