Пошаговая миграция из Zend Framework с 1 по 2

Мне нужно перенести приложение из Zend Framework 1.12.0 в версию 2. Пока нет руководства по миграции . Я уже изучил соглашения о кодировании ZF2, и я применил пространства имён зависимостей (Zend \ Di) и PHP 5.3. Моя цель – реорганизовать мое приложение ZF1 в модуль ZF2.

Вопрос. Можно ли поэтапно поступить с по крайней мере частично рабочим приложением после каждого шага и избежать огромных шагов рефакторинга ? Если да, каковы шаги?

Вот моя идея такой пошаговой миграции, но я не знаю, закончится ли я с рабочим приложением после каждого шага:

  1. Начните с настройки приложения скелета ZF2
  2. Настройте новый модуль (MyApp) и переустановите содержимое моего приложения ZF1 в структуру папок модуля MyApp. Затем настройте очень базовую конфигурацию и загрузку и перенесите IndexController, расширив его из ZF2 AbstractActionController. Модели (Zend_Db) и представления (Zend_View) будут перенесены позже. Цель здесь – иметь рабочий IndexController :: indexAction, который не имеет много зависимостей.
  3. Настройте дополнительную конфигурацию и загрузку (Routing, Translate, Locale, Cache, Db, Acl, ViewHelpers, …). Сначала я хотел бы настроить версии этих компонентов ZF1 и перенести их позже один за другим.
  4. Перенесите другие контроллеры и настройте инъекцию зависимостей в контроллеры либо с помощью Zend \ Di, либо с помощью ServiceManager .
  5. Настройте автоматическое развертывание, создав старые сценарии phing с новой структурой каталогов.
  6. Перенесите представления (включая помощников) и формы в ZF2.
  7. Миграция моделей (от Zend_Db либо до ZF2 Zend \ Db, либо до Doctrine).
  8. Перенесите другие компоненты ZF1 по одному (Translate, Locale, Cache, Acl, …).
  9. Рефакторинг реабилитации и длительный отпуск.

Тем не менее, у меня будет рабочее приложение после каждого шага, только если некоторые компоненты ZF2 работают вместе с компонентами ZF1. Я понятия не имею, возможно ли использовать ZF1-представления (и просмотреть помощники) с помощью контроллеров ZF2.

Миграция из Zend Framework 1

Данное руководство предназначено для предоставления инструментов и стратегий для перехода от Zend Framework 1 к Zend Framework 2. Нет единого решения, которое будет работать для каждого проекта, а также никаких инструментов для автоматизации процесса.

В этом руководстве мы рассмотрим следующее:

  1. Инструменты для namespacing вашего кода.
  2. Инструменты для использования Zend Framework 2 в вашем приложении Zend Framework 1.
  3. Стратегии одновременного запуска Zend Framework 2 и Zend Framework 1.
  4. Стратегии для облегчения перехода вашего кода, в основном, на чистое разделение логики домена и уровня MVC.
  5. Стратегии миграции уровня MVC.
  6. Стратегии миграции вашего домена.

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 и т. Д.)
  • Замените компоненты, отличные от MVC, с аналогами ZF2, включая автозагрузчик
  • Создайте структуру приложения ZF2 и перехватчики, чтобы начать использовать модули ZF2
  • Переместите контроллеры и представления (все еще работая над планом для этого)