Для читателей, которые имеют опыт работы с Zend Framework 2, в этом разделе мы дадим некоторую информацию о том, что изменилось в Zend Framework 3.
ZF3 - это эволюционный релиз, и таким образом обратная совместимость сохраняется в большинстве случаев.
Однако, некоторая работа по миграции все равно необходима, если вы использовали интерфейс ServiceLocatorAwareInterface
в своем коде (что вы, вероятно, делали). В ZF3 этот интерфейс был удален, и теперь все зависимости должны
передаваться посредством фабрик. Так что вам придется написать фабрики для всех ваших контроллеров, сервисов,
помощников вида и плагинов контроллеров.
В ZF2 компоненты хранились в едином репозитарии под названием zendframework/zf2
.
В ZF3 компоненты теперь хранятся в своих собственных репозитариях, по одному GIT репозитарию на компонент (например,
zendframework/zend-mvc
, zendframework/zend-servicemanager
, zendframework/zend-form
, и т.д.).
Это позволяет разрабатывать и выпускать компоненты независимо друг от друга.
Теперь компоненты еще более независимы друг от друга, чем раньше. Например, компонент Zend\Mvc
был разделен
на несколько компонентов, и для маршрутизации теперь используется компонент Zend\Router
.
Теперь в composer.json
рекомендуется указывать названия компонентов, от которых зависит приложение,
хотя все еще можно указать зависимость от пакета zendframework/zendframework
, который устанавливает
все доступные компоненты.
В ZF3 введен новый плагин для Composer, называемый component installer. Он позволяет устанавливать компоненты как модули ZF. Установщик вставляет информацию о компоненте в файл конфигурации приложения.
Создатели ZF3 проделали отличную работу по улучшению производительности компонентов Zend\ServiceManager
и Zend\EventManager
.
Теперь они в несколько раз более быстры, чем раньше. Недостаток - вам придется проделать некоторую работу по миграции.
Названия контроллеров и сервисов теперь рекомендуется писать с использованием конструкции PHP 5.5 ::class
.
Например, если раньше вы регистрировали свой контроллер как Application\Controller\Index
, теперь вам
нужно регистрировать его как IndexController::class
.
В ZF2 рекомендуемая структура директорий подчинялась стандарту PSR-0, в то время как в ZF3 используется стандарт PSR-4. Это требует от вас (небольшой) работы по миграции.
В компании Zend считают, что будущее PHP за middleware. "Middleware - это просто код, выполняющийся между входящим HTTP запросом и выходным HTTP ответом." Теперь вы можете регистрировать middleware listener в своем MVC приложении.
Теперь каждый компонент фреймворка содержит свою собственную документацию. Документация теперь написана в формате Markdown и гораздо лучше продумана.