Documentación de Laravel 10.x
Aquí encontrarás fragmentos de código de Laravel y consejos útiles sobre desarrollo web.
Broadcasting
Console
Eventos
Excepciones
Http
Trabajos
Escuchadores
Correo
Modelos
Notificaciones
Políticas
Proveedores
Reglas
La estructura predeterminada de la aplicación Laravel está destinada a proporcionar un excelente punto de partida tanto para aplicaciones grandes como pequeñas. Pero eres libre de organizar tu aplicación como desees. Laravel impone casi ninguna restricción sobre dónde se encuentra una clase en particular, siempre y cuando Composer pueda cargar automáticamente la clase.
Nota ¿Eres nuevo en Laravel? Echa un vistazo al Bootcamp de Laravel para obtener un recorrido práctico por el framework mientras te guiamos en la construcción de tu primera aplicación Laravel.
El directorio app
contiene el código principal de tu aplicación. Exploraremos este directorio con más detalle pronto; sin embargo, casi todas las clases de tu aplicación estarán en este directorio.
El directorio bootstrap
contiene el archivo app.php
, que inicia el framework. Este directorio también contiene un directorio cache
que contiene archivos generados por el framework para la optimización del rendimiento, como los archivos de caché de rutas y servicios. Por lo general, no deberías necesitar modificar ningún archivo dentro de este directorio.
El directorio config
, como su nombre indica, contiene todos los archivos de configuración de tu aplicación. Es una excelente idea leer todos estos archivos y familiarizarte con todas las opciones disponibles para ti.
El directorio database
contiene tus migraciones de base de datos, fábricas de modelos y semillas. Si lo deseas, también puedes usar este directorio para almacenar una base de datos SQLite.
El directorio public
contiene el archivo index.php
, que es el punto de entrada para todas las solicitudes que ingresan a tu aplicación y configura la carga automática. Este directorio también alberga tus activos, como imágenes, JavaScript y CSS.
El directorio resources
contiene tus vistas así como tus activos en bruto, no compilados, como CSS o JavaScript.
routes
El directorio routes
contiene todas las definiciones de rutas para tu aplicación. Por defecto, Laravel incluye varios archivos de rutas: web.php
, api.php
, console.php
y channels.php
.
El archivo web.php
contiene rutas que el RouteServiceProvider
coloca en el grupo de middleware web
, que proporciona el estado de la sesión, protección CSRF y cifrado de cookies. Si tu aplicación no ofrece una API RESTful sin estado, es probable que todas tus rutas estén definidas en el archivo web.php
.
El archivo api.php
contiene rutas que el RouteServiceProvider
coloca en el grupo de middleware api
. Estas rutas están destinadas a ser sin estado, por lo que las solicitudes que ingresan a la aplicación a través de estas rutas deben estar autenticadas mediante tokens y no tendrán acceso al estado de la sesión.
El archivo console.php
es donde puedes definir todos tus comandos de consola basados en cierres. Cada cierre está vinculado a una instancia de comando, lo que permite un enfoque simple para interactuar con los métodos de E/S de cada comando. Aunque este archivo no define rutas HTTP, define puntos de entrada (rutas) basados en consola para tu aplicación.
El archivo channels.php
es donde puedes registrar todos los canales de transmisión de eventos que admite tu aplicación.
El directorio storage
contiene tus registros, plantillas Blade compiladas, sesiones basadas en archivos, cachés basadas en archivos y otros archivos generados por el framework. Este directorio está segregado en los directorios app
, framework
y logs
. El directorio app
se puede usar para almacenar cualquier archivo generado por tu aplicación. El directorio framework
se utiliza para almacenar archivos y cachés generados por el framework. Finalmente, el directorio logs
contiene los archivos de registro de tu aplicación.
El directorio storage/app/public
se puede usar para almacenar archivos generados por el usuario, como avatares de perfil, que deben ser públicamente accesibles. Debes crear un enlace simbólico en public/storage
que apunte a este directorio. Puedes crear el enlace utilizando el comando Artisan php artisan storage:link
.
El directorio tests
contiene tus pruebas automatizadas. Se proporcionan pruebas de unidad y pruebas de características PHPUnit de ejemplo. Cada clase de prueba debe tener el sufijo de la palabra Test
. Puedes ejecutar tus pruebas utilizando los comandos phpunit
o php vendor/bin/phpunit
. O, si deseas una representación más detallada y bonita de los resultados de tus pruebas, puedes ejecutar tus pruebas utilizando el comando Artisan php artisan test
.
El directorio vendor
contiene las dependencias de Composer de tu aplicación.
La mayoría de tu aplicación se encuentra en el directorio app
. Por defecto, este directorio tiene un espacio de nombres App
y se carga automáticamente con Composer utilizando el estándar de carga automática PSR-4.
El directorio app
contiene una variedad de directorios adicionales como Console
, Http
y Providers
. Piensa en los directorios Console
y Http
como proveedores de una API hacia el núcleo de tu aplicación. El protocolo HTTP y la CLI son dos mecanismos para interactuar con tu aplicación, pero no contienen lógica de la aplicación en sí. En otras palabras, son dos formas de emitir comandos a tu aplicación. El directorio Console
contiene todos tus comandos Artisan, mientras que el directorio Http
contiene tus controladores, middleware y solicitudes.
Se generarán varios otros directorios dentro del directorio app
a medida que uses los comandos Artisan make
para generar clases. Por ejemplo, el directorio app/Jobs
no existirá hasta que ejecutes el comando Artisan make:job
para generar una clase de trabajo.
Nota Muchas de las clases en el directorio
app
pueden generarse mediante Artisan a través de comandos. Para revisar los comandos disponibles, ejecuta el comandophp artisan list make
en tu terminal.
El directorio Broadcasting
contiene todas las clases de canal de transmisión para tu aplicación. Estas clases se generan con el comando make:channel
. Este directorio no existe por defecto, pero se creará cuando crees tu primer canal. Para obtener más información sobre canales, consulta la documentación sobre transmisión de eventos.
El directorio Console
contiene todos los comandos Artisan personalizados para tu aplicación. Estos comandos se pueden generar mediante el comando make:command
. Este directorio también alberga tu kernel de consola, donde se registran tus comandos Artisan personalizados y se definen tus tareas programadas.
Este directorio no existe por defecto, pero se creará mediante los comandos Artisan event:generate
y make:event
. El directorio Events
alberga clases de eventos. Los eventos se pueden usar para alertar a otras partes de tu aplicación que se ha producido una acción específica, brindando mucha flexibilidad y desacoplamiento.
El directorio Exceptions
contiene el manejador de excepciones de tu aplicación y también es un buen lugar para colocar cualquier excepción lanzada por tu aplicación. Si deseas personalizar cómo se registran o representan tus excepciones, debes modificar la clase Handler
en este directorio.
El directorio Http
contiene tus controladores, middleware y solicitudes de formularios. Casi toda la lógica para manejar las solicitudes que ingresan a tu aplicación se colocará en este directorio.
Este directorio no existe por defecto, pero se creará si ejecutas el comando Artisan make:job
. El directorio Jobs
alberga los trabajos en cola para tu aplicación. Los trabajos se pueden encolar desde tu aplicación o ejecutarse de manera síncrona dentro del ciclo de vida de la solicitud actual. Los trabajos que se ejecutan síncronamente durante la solicitud actual a veces se denominan "comandos", ya que son una implementación del patrón de comando.
Este directorio no existe por defecto, pero se creará si ejecutas los comandos Artisan event:generate
o make:listener
. El directorio Listeners
contiene las clases que manejan tus eventos. Los escuchadores de eventos reciben una instancia de evento y realizan lógica en respuesta al evento que se ha disparado. Por ejemplo, un evento UserRegistered
podría ser manejado por un escuchador SendWelcomeEmail
.
Este directorio no existe por defecto, pero se creará si ejecutas el comando Artisan make:mail
. El directorio Mail
contiene todas tus clases que representan correos electrónicos enviados por tu aplicación. Los objetos de correo electrónico te permiten encapsular toda la lógica de construcción de un correo electrónico en una sola clase simple que se puede enviar mediante el método Mail::send
.
El directorio Models
contiene todas tus clases de modelo Eloquent. El ORM Eloquent incluido con Laravel proporciona una hermosa y simple implementación de Active Record para trabajar con tu base de datos. Cada tabla de base de datos tiene un "Modelo" correspondiente que se utiliza para interactuar con esa tabla. Los modelos te permiten realizar consultas en tus tablas, así como insertar nuevos registros en la tabla.
Este directorio no existe por defecto, pero se creará si ejecutas el comando Artisan make:notification
. El directorio Notifications
contiene todas las notificaciones "transaccionales" que envía tu aplicación, como notificaciones simples sobre eventos que ocurren dentro de tu aplicación. La función de notificación de Laravel abstrae el envío de notificaciones a través de una variedad de controladores como correo electrónico, Slack, SMS o almacenamiento en una base de datos.
Este directorio no existe por defecto, pero se creará si ejecutas el comando Artisan make:policy
. El directorio Policies
contiene las clases de políticas de autorización para tu aplicación. Las políticas se utilizan para determinar si un usuario puede realizar una acción específica contra un recurso.
El directorio Providers
contiene todos los proveedores de servicios para tu aplicación. Los proveedores de servicios inician tu aplicación al vincular servicios en el contenedor de servicios, registrar eventos o realizar cualquier otra tarea para preparar tu aplicación para las solicitudes entrantes.
En una aplicación Laravel nueva, este directorio ya contendrá varios proveedores. Eres libre de agregar tus propios proveedores a este directorio según sea necesario.
Este directorio no existe por defecto, pero se creará si ejecutas el comando Artisan make:rule
. El directorio Rules
contiene objetos de reglas de validación personalizadas para tu aplicación. Las reglas se utilizan para encapsular la lógica de validación complicada en un objeto simple. Para obtener más información, consulta la documentación de validación.