Para los lectores que han experimentado con Zend Framework 2 daremos en esta sección información sobre lo que ha cambiado en Zend Framework 3.
Abajo presentamos las principales diferencias técnicas entre ZF2 y ZF3:
ZF3 es una versión evolutiva así que la retrocompatibilidad se preserva en la
mayoría de los caso. Sin embargo, algunos trabajos de migración tienen que
hacerse si usamos ServiceLocatorAwareInterface
a lo largo del código,
lo que es probable. En ZF3, esta interfaz se ha removido y ahora todas las
dependencias se deben inyectar a través de fábricas. Así, tendremos que crear
fábricas para la mayoría de los controladores, servicios, ayudantes de vista
y complementos de controlador.
En ZF2 los componentes estaban guardados en un solo repositorio GIT. En ZF3
los componentes están guardados en multiples repositorios GIT, un repositorio
por cada componente (por ejemplo, zendframework/zend-mvc
,
zendframework/zend-servicemanager
, zendframework/zend-form
, etc).
Esto permite desarrollar y publicar componentes independientementes uno de otro.
Los componentes son más fáciles de desacoplar que antes y tienen un mínimo de
dependencias entre ellos. El componente Zend\Mvc
se ha divido en varios
componentes. Por ejemplo, las funcionalidades para el enrutamiento se han
separado y colocado en el nuevo componente Zend\Router
.
Ahora se recomienda especificar las dependencias individualmente en el archivo
composer.json
, aunque aún es posible depender del paquete zendframework/zendframework
que es un metapaquete que instala todos los componentes disponibles.
En ZF3 un complemente especial de Composer llamado component installer se introdujo. Este permite instalar componentes como módulos de ZF. Además, inyecta información sobre los componentes dentro del archivo de configuración de la aplicación.
Los desarrolladores de ZF3 hicieron un gran trabajo mejorando el rendimiento
de los componentes Zend\ServiceManager
y Zend\EventManager
. Ellos ahora son
varias veces más rápidos que antes. La desventaja es que tenemos que hacer un
trabajo de migración para poder usar las nuevas funcionalidades. Ahora, en los nombre
de los controladores y los servicios se recomienda utilizar la característica
de PHP 5.5 llamada ::class
. Por ejemplo, si antes registramos nuestro
controlador como Application\Controller\Index
, ahora lo registraremos como
IndexController::class
. Si antes registrábamos los nombres de los servicios
como queríamos ahora se recomienda hacerlo usando ServiceClassName::class
.
Podemos leer la documentación del componente Mvc
para información adicional.
En ZF2 la estructura de carpetas recomendada fue PSR-0, mientras que en ZF3 es PSR-4. Esto requiere algunos (pequeños) trabajos de migración.
Zend cree que el futuro de PHP está en ser un «middleware». «Middleware es, dicho con simplicidad, código ubicado entre una petición HTTP entrate y una respuesta HTTP saliente». Ahora podemos registrar un «middleware» que escuche eventos en una aplicación MVC.
Ahora cada componente en su repositorio contiene su propia documentación. La documentación esta ahora en formato Markdown y tiene mejor diseño.