Кто-нибудь, пожалуйста, опишите, насколько сильно архитектура Zend изменилась с версии 1 на 3. Недавно Zend выпустил ZF3, но нет информации о том, как перейти с zf1 на zf3. У меня есть приложение, которое было разработано в zf1, теперь я ищу возможность обновить его до использования PHP 7 power с ZF3. Должен ли я переписать весь код или сколько усилий нужно, чтобы перейти на последнюю версию.
Кроме того, ZF3 утверждал, что в 4 раза быстрее под PHP7. На самом деле это PHP7, который работает быстрее, а не ZF3. Я не уверен, насколько они улучшились по сравнению с фреймворком Laravel, который является одним из лучших фреймворков за последние несколько лет.
Если кто-то использовал ZF3, пожалуйста, поделитесь своим опытом.
Если вы имеете дело с большим приложением, не будет быстрого и безболезненного способа перехода на 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.
Это может быть сложная дорога, но я считаю, что это возможно, хотя это может потребовать значительных затрат времени.
В основном мигрируют из ZF2, а затем мигрируют в ZF3.
Или, если вы просто хотите ускорить PHP7, просто обновитесь до PHP7 и проведите небольшое тестирование, которое может выявить некоторые (но не все) ошибки.
Продолжайте читать для больше …
Сначала перейдите на ZF2
https://framework.zend.com/manual/2.1/en/migration/overview.html
Затем перейдите на 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