PHP es un lenguaje de desarrollo web muy popular. Sin embargo escribir sitios web en PHP puro es difícil. Si escribimos una aplicación web en PHP puro tendremos que organizar el código de alguna manera, capturar y validar los datos que ingresa el usuario, implementar la autenticación de usuarios y el control de acceso, administrar bases de datos, probar el código, etc. A medida que nuestro sitio crece en tamaño se vuelve más y más difícil escribir código de una manera consistente. Cada desarrollador de nuestro equipo aplica su estilo y patrones favoritos. El código comienza a complicarse demasiado y se hace lento y difícil de mantener. Mezclamos todo nuestro código en un solo y gigante «script» sin separación de conceptos. Tenemos que reinventar la rueda muchas veces causando problemas de seguridad. Y mucho más importante, luego cuando nos ponemos a desarrollar un nuevo sitio web vemos que una parte considerable del código que ya hemos escrito para el antiguo sitio web se puede usar nuevamente con pequeñas modificaciones. Es decir, el código podría separarse en una biblioteca. Esta es la manera como funciona un framework.
Un framework es un tipo de biblioteca, una pieza de software (también escrita en PHP) que provee código base a los desarrolladores web y una manera consistente y estandarizada de crear aplicaciones web.
Zend Framework 3 es un framework de PHP disponible como Software Libre y Código Abierto. Su desarrollo esta guiado y patrocinado por «Zend Technologies» que es además conocido como el mantenedor del lenguaje de programación PHP. La primera versión (Zend Framework 1) se lanzó en 2007; Zend Framework 2, la segunda versión del software, se lanzó en septiembre de 2012. Zend Framework 3 (ZF3) se lanzó en junio de 2016.
Zend Framework 3 provee las siguientes capacidades:
Permite desarrollar un sitio web mucho más rápido que cuando lo escribimos en PHP puro. ZF3 provee muchos componentes que se pueden usar como código base para nuestro sitio web.
Facilita la cooperación con los otros miembros de nuestro equipo de desarrollo. El patrón Modelo-Vista-Controlador que usa ZF3 permite separar la lógica del negocio y la capa de presentación de nuestro sitio web haciendo su estructura consistente y fácil de mantener.
Permite escalar el sitio web con el concepto de módulos. ZF3 usa el concepto de módulos que permite separar el sitio en partes que se puedan desacoplar permitiendo reusar los modelos, las vistas, los controladores y archivos estáticos de un sitio web a otro.
Permite acceder a la base de datos de una manera orientada a objetos en lugar de interactuar directamente con la base de datos usando consultas SQL. Podemos usar el mapeo objeto-ralacional de Doctrine (ORM) para administrar la estructura y las relaciones entre nuestros datos. Con Doctrine podemos asociar nuestras tablas de base de datos a clases PHP (llamadas entidades) y cada fila de la tabla se asocia con una instancia de esta clase. Doctrine permite abstraernos de la base de datos y hacer el código más fácil de entender.
Permite escribir sitios web seguros con la ayuda de los componentes que ZF3 provee, como filtros y validadores para los datos ingresados en los formularios, escapar la salida HTML, algoritmos criptográficos, detectores de humanos (Captcha) y falsificación de petición en sitios cruzados (CSRF).