Как я могу перенести Zend Framework 1 на 3
Кто-нибудь, пожалуйста, опишите, насколько сильно архитектура Zend изменилась с версии 1 на 3. Недавно Zend выпустил ZF3, но нет информации о том, как перейти с zf1 на zf3. У меня есть приложение, которое было разработано в zf1, теперь я ищу возможность обновить его до использования PHP 7 power с ZF3. Должен ли я переписать весь код или сколько усилий нужно, чтобы перейти на последнюю версию.
Кроме того, ZF3 утверждал, что в 4 раза быстрее под PHP7. На самом деле это PHP7, который работает быстрее, а не ZF3. Я не уверен, насколько они улучшились по сравнению с фреймворком Laravel, который является одним из лучших фреймворков за последние несколько лет.
Если кто-то использовал ZF3, пожалуйста, поделитесь своим опытом.
2 ответа
Если вы имеете дело с большим приложением, не будет быстрого и безболезненного способа перехода на ZF3. Начиная с маршрутизации и заканчивая сервисами, как практическая, так и теоретическая среда, лежащая в основе Zend Framework 2/3, совершенно противоречит первой итерации.
Когда ZF2 был впервые выпущен, я выполнил миграцию с ZF1 на ZF2 (а также с ZF2 на ZF3) в очень большом проекте. В итоге мы использовали инкрементальный подход, требующий незначительных отклонений от базовой библиотеки ZF1 (т.е. мы отредактировали несколько классов Zend), что нам очень помогло. Поскольку ZF1 попал в EOL в сентябре, то есть больше не будет исправлений ошибок или каких-либо обновлений, это не должно представлять для вас существенной проблемы.
В посте, который я перечислил ниже, вы найдете описание шагов, которые позволили нам выполнить эту миграцию, а также ссылку на код, предназначенный для частичного объединения ZF1/ZF2. Поскольку изменение с ZF2 и ZF3 не создало слишком много проблем обратной совместимости, шаги, которые я подробно описал в этом посте, все же должны (в основном) применяться для перехода с ZF1 на ZF3.
Пошаговая миграция с Zend Framework 1 на 2
Вот еще две ссылки, которые вы можете найти полезными. Первая ссылка - руководство по миграции с ZF1 на ZF2, предоставляемое Zend. Вторая ссылка - общая документация для Zend Framework. Если компонент был обновлен до версии 3.0 (например, zend-mvc, zend-servicemanager и т. Д.), Он должен содержать руководство по миграции, в котором рассказывается, что изменилось между ZF2/3.
- Миграция с ZF1 на ZF2 - https://framework.zend.com/manual/2.4/en/migration/overview.html
- Документация ZF3 - https://docs.zendframework.com/
Это может быть сложная дорога, но я считаю, что это возможно, хотя это может потребовать значительных затрат времени.
В основном мигрируют из ZF2, а затем мигрируют в ZF3.
Или, если вы просто хотите, чтобы PHP7 ускорился, просто обновитесь до PHP7 и проведите небольшое тестирование, которое может выявить некоторые (но не все) ошибки.
Продолжайте читать для больше...
Сначала перейдите на ZF2
https://framework.zend.com/manual/2.1/en/migration/overview.html
- Инструменты для пространства имен вашего кода.
- Инструменты для использования Zend Framework 2 в вашем приложении Zend Framework 1.
- Стратегии параллельного запуска Zend Framework 2 и Zend Framework 1.
- Стратегии для облегчения переноса вашего кода, ориентируясь в первую очередь на четкое разделение логики вашего домена и уровня MVC.
- Стратегии миграции слоя MVC.
- Стратегии миграции вашего доменного уровня.
Затем перейдите на ZF3:
Zend Framework v2 до v3 был задуман как дополнительное обновление. В прошлом году мы даже предприняли усилия для обеспечения функций прямой совместимости в версиях компонентов версии 2, чтобы пользователи могли подготовить свой код для обновления.
Однако это не исчерпывающее руководство по миграции. Хотя мы знаем большинство областей, где поломка может и будет иметь место, мы также знаем, что только когда разработчики действительно обновляются, мы увидим полную ситуацию. Таким образом, относитесь к этому как к работе, и, пожалуйста, не стесняйтесь предлагать обновления или изменения с помощью проблем или запросов, чтобы мы могли улучшить!
https://docs.zendframework.com/tutorials/migration/to-v3/overview/
Я предполагаю, что существует значительное количество поломок из-за значительных изменений из ZF в ZF2.
Но вы можете запустить ZF1 и ZF2 параллельно:
https://framework.zend.com/manual/2.4/en/migration/zf1_zf2_parallel.html
С технической точки зрения абсолютно возможно запускать ZF2 параллельно с ZF1, потому что между именами классов нет конфликта из-за того, что ZF2 использует пространства имен, а ZF1 - нет. Запуск ZF1 и ZF2 параллельно можно использовать в качестве стратегии миграции в проектах, где невозможно или не удобно переносить все приложение с ZF1 на ZF2. Например, вы можете реализовать любые новые функции приложения, используя ZF2, сохраняя при этом оригинальные функции ZF1.
Мне неизвестно, могут ли ZF1 и ZF3 работать параллельно, но, возможно, не невозможно.
Или просто попробуйте с PHP7
Если бы это был я, я мог бы сначала попробовать перейти на PHP7 и поискать какие-либо ошибки в коде.
Вы можете запустить что-то похожее на следующее, чтобы проверить ваш PHP-код на PHP7:
find . -name "*.php" -print0 | xargs -P 8 -n 1 -0 sh -c '/usr/local/Cellar/php70/7.0.0/bin/php -l $0 || true' | grep -v 'No syntax'
Если вы используете Mac, вы можете использовать переключатель версий PHP, установив его с помощью brew.
brew install brew-php-switcher
Возможно, вам придется закомментировать эту строку в вашем httpd.conf:
#LoadModule php5_module libexec/apache2/libphp5.so
затем:
brew install php71
Добавьте эту строку в ваш httpd.conf:
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
Переключение версий:
brew-php-switcher 71