Estructura de la aplicación

Introducción

La estructura por defecto de la aplicación Laravel está destinada a proporcionar un buen punto de partida tanto para aplicaciones grandes como para aplicaciones pequeñas. Aún así, tu eres libre de organizar tu aplicación como más te guste. Laravel no impone casi ninguna restricción respecto a donde se encuentra una clase en el proyecto, siempre y cuando Composer sea consciente de ella para poder cargarla al arrancar de la aplicación.

El directorio raíz

El directorio raíz de una nueva instalación nueva de Laravel contiene una serie de directorios:

El directorio app, como imaginarás, contiene el código base de tu aplicación. Hablaremos en detalle de esta carpeta más adelante.

The bootstrap folder contains a few files that bootstrap the framework and configure autoloading, as well as a cache folder that contains a few framework generated files for bootstrap performance optimization.

El directorio config, como su nombre indica, contiene todos los archivos de configuración de tu aplicación.

The database folder contains your database migration and seeds. If you wish, you may also use this folder to hold an SQLite database.

El directorio public contiene el controlador de la parte pública así como sus archivos estáticos (Imágenes, JavaScript, CSS, etc.).

The resources directory contains your views, raw assets (LESS, SASS, CoffeeScript), and localization files.

El directorio storage contiene plantillas compiladas de Blade, sesiones basadas en archivos, archivos de caché y otros archivos generados por el framework. This folder is segregated into app, framework, and logs directories. The app directory may be used to store any files utilized by your application. The framework directory is used to store framework generated files and caches. Finally, the logs directory contains your application's log files.

The tests directory contains your automated tests. An example PHPUnit is provided out of the box.

The vendor directory contains your Composer dependencies.

El directorio de la aplicación

La "carne" de tu aplicación reside en el directorio app. Por defecto, este directorio se encuentra bajo el namespace App y composer lo carga automáticamente utilizando el estándar PSR-4 autoloading standard. Puedes cambiar este namespace mediante el comando app:name de Artisan.

El directorio app viene con una variedad de directorios adicionales, tales como Console, Http, y Providers. Piensa en los directorios Console y Http como proveedores de un API al "core" de tu aplicación. El protocolo HTTP y CLI son mecanismos (pasarelas) para interactuar con tu aplicación, pero en realidad no contienen lógica de la aplicación. En otras palabras, son simplemente dos maneras de emitir comandos a tu aplicación. El directorio Console contiene todos tus comandos de Artisan, mientras el directorio Http contiene tus controladores, filtros y peticiones.

The Jobs directory, of course, houses the queueable jobs for your application. Jobs may be queued by your application, as well as be run synchronously within the current request lifecycle.

The Events directory, as you might expect, houses event classes. Events may be used to alert other parts of your application that a given action has occurred, providing a great deal of flexibility and decoupling.

The Listeners directory contains the handler classes for your events. Handlers receive an event and perform logic in response to the event being fired. For example, a UserRegistered event might be handled by a SendWelcomeEmail listener.

El directorio Excepcions contiene el controlador de excepciones de tu aplicación y también es un buen lugar para meter las excepciones lanzadas por tu aplicación.

Nota: Muchas de las clases en el directorio app pueden ser generadas por Artisan mediante comandos. Para repasar los comandos disponibles, ejecuta el comando php artisan list make en tu terminal.

Namespace de tu aplicación

Como se señaló anteriormente, el namespace por defecto de la aplicación es App; sin embargo, puedes cambiar este namespace para que coincida con el nombre de la aplicación, fácilmente con el comando Artisan app:name. Por ejemplo, si tu aplicación se llama "SocialNet", deberías ejecutar el siguiente comando:

php artisan app:name SocialNet

Of course, you are free to simply use the App namespace.