Мне нужно перенести приложение из Zend Framework 1.12.0 в версию 2. Пока нет руководства по миграции . Я уже изучил соглашения о кодировании ZF2, и я применил пространства имён зависимостей (Zend \ Di) и PHP 5.3. Моя цель – реорганизовать мое приложение ZF1 в модуль ZF2.
Вопрос. Можно ли поэтапно поступить с по крайней мере частично рабочим приложением после каждого шага и избежать огромных шагов рефакторинга ? Если да, каковы шаги?
Вот моя идея такой пошаговой миграции, но я не знаю, закончится ли я с рабочим приложением после каждого шага:
Тем не менее, у меня будет рабочее приложение после каждого шага, только если некоторые компоненты ZF2 работают вместе с компонентами ZF1. Я понятия не имею, возможно ли использовать ZF1-представления (и просмотреть помощники) с помощью контроллеров ZF2.
Миграция из Zend Framework 1
Данное руководство предназначено для предоставления инструментов и стратегий для перехода от Zend Framework 1 к Zend Framework 2. Нет единого решения, которое будет работать для каждого проекта, а также никаких инструментов для автоматизации процесса.
В этом руководстве мы рассмотрим следующее:
http://framework.zend.com/manual/2.1/en/migration/overview.html
Где-то когда-то было написано, что это будет легкий peasy с некоторым промежуточным слоем, но я никогда не видел никаких ссылок или чего-либо в библиотеке, которые выглядели просто удаленно.
Теперь единственная вещь и самая последняя информация, которую вы можете найти, находится на странице обзора документации. Это так:
Примечание. ZF2 не поддерживает обратную совместимость с ZF1 из-за новых функций PHP 5.3+, реализованных в рамках платформы, и из-за серьезных перезаписи многих компонентов.
Я никогда не ожидал, что это будет совместимо с обратной связью, но ключевое заявление здесь, я считаю, является основным переписанием многих компонентов.
Несколько месяцев назад я начал новый проект с ZF2, где мне нужна библиотека; поэтому нет MVC, который должен быть легким, не так ли? Пока это был кошмар, потому что ничего не изменилось. Помимо некоторых знакомых названий классов или структур вся структура полностью переписана с нуля.
Вещи, которые я любил, много использовали и знали наизусть, как формы, кеш или сеанс, совершенно разные. Для моего проекта это стоило мне много времени без каких-либо преимуществ. Один из ключевых объектов для ZF2, я думал, был переделан документацией, которая по сравнению с предыдущим написана хуже.
Для других существующих проектов ZF1.x я не вижу, как управлять обновлением, кроме как полностью переписать приложение.
Из Zend Framework 2 FAQ :
У меня есть приложение, созданное с помощью Zend Framework 1 – смогу ли я перенести его в новую версию?
Абсолютно. Важной частью Zend Framework 2 является уровень миграции, который позволит запустить код ZF 1 на новом движке ZF 2, который будет доступен в будущем. С его помощью вы сможете добавить новый код ZF 2 и реорганизовать существующий код с контролируемым темпом.
Однако на данный момент я не слышал о каком-либо реальном уровне миграции. Мы можем только надеяться, что будет, но на данный момент у меня есть свои сомнения.
В прошлом году мы перенесли большое приложение из Zend Framework 1 в Zend Framework 2. Мы начали с простых вещей, таких как namespacing, и медленно пробивались в различные компоненты библиотеки. В конечном итоге мы закончили редактирование Zend_Layout
для работы с Zend\Filter
, Zend_Form
для работы с Zend\Filter
и Zend\Json
, Zend_Navigation
для работы с Zend\Permissions\Acl
и т. Д. Это помогло нам устранить почти все компоненты ZF1 с исключением структуры приложения ZF1, которая включает в себя четыре класса Zend_Application
, Zend_Config
, Zend_Controller
и Zend_Layout
. Последней частью головоломки является реализация Zend\Mvc\Application
и Zend\View
, остальная часть – ZF2-ready.
Совсем недавно мы создали прокси- Zend\Mvc\Application
для подключения к Zend\Mvc\Application
и ZF2-модулям из ZF1. Это было очень полезно. Я подробно остановился на http://webjawns.com/2013/11/migrating-to-zf2-integrating-composer-and-doctrineormmodule/ .
В итоге…
Model_
to Model\
, Application_Controller
to Application\Controller
и т. Д.)