Cada sitio web basado en ZF3 (incluyendo la aplicación skeleton) se organiza de una misma manera siguiendo las recomendaciones. Por supuesto que podemos configurar nuestra aplicación para usar una estructura de carpetas diferente pero esto hace más difícil que otras personas que no están familiarizadas con esta estructura puedan mantener nuestro sitio web.
Vamos a dar un vistazo general a la estructura de carpetas típica (ver figura 2.1):
Como podemos ver en la carpeta de primer nivel, que llamaremos desde ahora
APP_DIR
, hay varios archivos:
composer.json
es el archivo de configuración JSON para Composer.
composer.lock
es un archivo que contiene información sobre los
paquetes instalados con Composer.
composer.phar
es un archivo PHP ejecutable que contiene el código
de la herramienta de manejo de dependencias, es decir, de Composer.
docker-compose.yml
y Dockerfile
son archivos auxiliares que solo
son útiles si usamos la herramienta de manejo de contenedores
Docker. En este libro no estudiamos el
uso de Docker.
LICENSE.md
es un archivo de texto que contiene la licencia de ZF3
(hemos hablado sobre ella en el capítulo Introducción a Zend Framework 3).
No podemos quitar o modificar este archivo por que la licencia de
ZF3 no permite hacerlo.
phpunit.xml.dist
es un archivo de configuración para PHPUnit
(framework para pruebas unitarias). Usamos este archivo cuando queremos
crear pruebas unitarias para nuestro sitio web.
README.md
es una archivo de texto que contiene una breve descripción
sobre la aplicación skeleton. Generalmente reemplazamos el contenido
de este archivo con la información sobre nuestro sitio web: su nombre,
que hace y como instalarlo.
TODO.md
es un archivo auxiliar que se puede borrar sin problemas.
Vagrantfile
es una archivo auxiliar que contiene la configuración
para Vagrant que es un administrador
de entornos de desarrollo virtuales. Podemos ignorar este archivo si
no conocemos que es Vagrant. En este libro no usaremos Vagrant.
Además, tenemos varias subcarpetas:
La carpeta config
contiene los archivos de configuración de nivel de
aplicación.
La carpeta data
contienen los datos que nuestra aplicación puede crear;
esta carpeta puede contener la cache usada para mejorar la aceleración de Zend
Framework.
La carpeta module
contiene todos los módulos de la aplicación. Actualmente
solo hay un módulo llamando Application
. Application
es el módulo
principal de nuestro sitio web. Además, si lo deseamos, podemos colocar
otros módulos allí. Hablaremos sobre los módulos más tarde.
El propósito de la carpeta vendor
es contener archivos de bibliotecas
de terceros incluyendo los archivos de la biblioteca Zend Framework 3.
Esta carpeta es usada principalmente por Composer.
La carpeta public
contiene los datos accesibles públicamente por el
usuario web. Como podemos ver, los usuarios web se
comunicarán principalmente con el archivo index.php
que también es
llamado punto de entrada a nuestro sitio web.
Nuestro sitio web tendrá solo un punto de entrada, index.php, esto es más seguro que permitir el acceso a todos nuestros archivos PHP.
Dentro de la carpeta public
además podemos encontrar el archivo
oculto .htaccess
. Su propósito principal es definir las reglas de
reescritura de URL.
La carpeta public
contiene varias subcarpetas que son accesibles
públicamente para los usuarios web.
css
contiene todos los archivos CSS accesibles públicamente.fonts
contiene las tipografías web específicas de la
aplicación.img
contiene las imágenes accesibles públicamente
(.JPG, .PNG, .GIF, .ICO, etc.).js
guarda los archivos JavaScript que usan nuestras
páginas web. Generalmente los archivos de la biblioteca
jQuery se colocan aquí pero también podemos
colocar nuestros archivos JavaScript.¿Que es la biblioteca jQuery?
jQuery es una biblioteca JavaScript que fue creada para simplificar el código del lado del cliente de las páginas HTML. Los mecanismos de selección de jQuery permiten fácilmente adjuntar administradores de eventos a un determinado elemento HTML, haciendo realmente simple tener páginas HTML interactivas.
Como Zend Skeleton Application se guarda en GitHub encontraremos
dentro de la estructura de carpetas el archivo oculto .gitignore
.
Este es un archivo del sistema de control de versiones GIT.
Podemos ignorarlo o incluso borrarlo si no planeamos guardar nuestro
código en un repositorio GIT.