Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

http://framework.zend.com/manual/2.1/en/migration/overview.html

Ответ 2

Где-то когда-то было написано, что это будет легкий peasy с некоторым промежуточным слоем, но я никогда не видел никаких ссылок или чего-либо в библиотеке, которые выглядели просто удаленно.

Теперь единственная вещь и самая последняя информация, которую вы можете найти, находятся на странице Обзор документации. Это:

Примечание. ZF2 не поддерживает обратную совместимость с ZF1 из-за новых функций PHP 5.3+, реализованных в рамках фреймворка, и из-за серьезных перезаписи многих компонентов.

Я никогда не ожидал, что это будет совместимо с обратной совместимостью, но ключевое выражение здесь, я считаю, - это основные перезаписи многих компонентов.

Я начал новый проект с ZF2 несколько месяцев назад, где мне нужна библиотека; поэтому нет MVC, который должен быть легким, не так ли? Пока это был кошмар, потому что ничего не изменилось. Помимо некоторых знакомых имен или структур классов, весь каркас полностью переписан с нуля.

Вещи, которые я любил, много использовали и знали наизусть, как формы, кеш или сеанс, совершенно разные. Для моего проекта это стоило мне много времени без каких-либо преимуществ. Один из ключевых объектов для ZF2, который я думал, - это пересмотр документации, которая по сравнению с предыдущим была хуже, чем предыдущая.

Для моих других существующих проектов ZF1.x я не вижу, как управлять обновлением, кроме как полностью переписать приложение.

Ответ 3

Из Zend Framework 2 FAQ:

У меня есть приложение, созданное с помощью Zend Framework 1 - смогу ли я перенести его в новую версию?

Совершенно верно. Важной частью Zend Framework 2 является уровень миграции, который позволит запустить код ZF 1 на новом движке ZF 2, который будет доступен в будущем. С его помощью вы сможете добавить новый код ZF 2 и реорганизовать существующий код с контролируемым темпом.

Однако на данный момент я не слышал о каком-либо реальном уровне миграции. Мы можем только надеяться, что будет, но на данный момент у меня есть свои сомнения.

Ответ 4

Мы переместили большое приложение из 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 готова.

Совсем недавно мы создали прокси-серверы для подключения к Zend\Mvc\Application и ZF2-модулям из ZF1. Это было чрезвычайно полезным. Я подробно описал шаги http://webjawns.com/2013/11/migrating-to-zf2-integrating-composer-and-doctrineormmodule/.

Вкратце...

  • Преобразование префиксов в пространства имен (Model_ до Model\, Application_Controller до Application\Controller и т.д.)
  • Заменить компоненты, отличные от MVC, с аналогами ZF2, включая автозагрузчик
  • Создайте структуру приложения ZF2 и перехватчики, чтобы начать использовать модули ZF2.
  • Переместить контроллеры и представления (все еще работает над планом для этого)