Estructura de un proyecto Laravel
Lección 7 / 8
Laravel Guía Laravel
Cuando creas un nuevo proyecto con Laravel, se crea un directorio en el que ya están disponibles todos los archivos necesarios para explotar inmediatamente el potencial que ofrece Laravel. Es un punto de partida válido para aplicaciones de todos los tamaños y necesidades, en el que cada directorio realiza una tarea específica relacionada con el ciclo de vida del desarrollo y ejecución de la aplicación.
Tratándose de un proyecto Composer, obviamente encontraremos dentro el archivo composer.json que enumera los paquetes básicos de una aplicación Laravel.
Junto a él encontramos una serie de directorios, cada uno de los cuales cumplirá su cometido.
Contenido nuevo proyecto Laravel
Contenido de la directory raíz
Directory App en Laravel
La directory app contiene iel codice base de la aplicación. Es la directory donde más trabajaremos, ya que aloja todas las clases php de la aplicación. Veremos más adelante como se organizan estas clases por dentro.
Directory Bootstrap en Laravel
La directory bootstrap contiene un archivo app.php que sirve para hacer el "bootstrap” (inicio) del framework cuando se inicia la aplicación. Dentro está el directorio de caché que utiliza Laravel para optimizar el rendimiento. Salvo necesidades especiales, no es necesario modificar los archivos contenidos en bootstrap.
Directory Config en Laravel
La directory config contiene el archivo de configuración de la aplicación. Cada archivo se ocupa de un determinado grupo de configuraciones (por ejemplo config/database.php contendrá las opciones de configuración del database, config/mail.php las del sistema de envío email). Las diferentes opciones se indican en la forma:
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
lo que indica, por ejemplo, que el valor de la opción de nombre de usuario se tomará de la variable de entorno DB_USERNAME; si esta variable no está configurada, se usará como default forge. Este mecanismo permite usar variables ambientales para configurar la aplicación de manera diferente según el entorno (desarrollo local, staging, producción...)
Directory Database en Laravel
La directory database contiene migraciones, factory model y seed para el database. Durante el desarrollo en el propio ordenador, es posible usar esta directory para mantener un database local SQLite.
Directory Lang en Laravel
La directory lang alberga las traducciones de la aplicación en los distintos idiomas soportados.
Directory Public en Laravel
La directory public contiene todos los recursos "estáticos" proporcionados por nuestra aplicación web (activos como imágenes, JavaScript, CSS en su versión optimizada para ser enviados a los clientes) y, sobre todo, el archivo index.php.
El archivo index.php es el punto de entrada de cada solicitud HTTP que llega a nuestra aplicación web, que es capturada y "enrutada" a la clase que la manejará. El archivo index.php carga también el autoloading.
Directory Resources en Laravel
La directory resources contiene las view (plantillas de páginas HTML) y los archivos fuente de los asset (que serán optimizados por las tareas apropiadas y copiados al público).
Directory Routes en Laravel
La directory routes contiene las llamadas rutas de la aplicación. Las aplicaciones Laravel incluyen diferentes tipos de rutas, cada una gestionada por uno de los archivos incluidos en esta directory. No todos los grupos son necesarios en todas las aplicaciones.
- routes/web.php: contiene las rutas del grupo web, para las cuales Laravel pone a disposición sesiones, protección CSFR y cifrado de cookie. Es decir, son las rutas para gestionar las llamadas y recursos como páginas web con form y similares.
- routes/api.php: contiene las rutas del grupo api, es decir, las rutas para aquellos recursos pensados para ser pensate stateless. Son las rutas para gestionar las API RESTful
- routes/console.php: contiene rutas particulares que se utilizan para invocar comandos
- routes/channels.php: sirve para registrar los canales de event broadcasting de las aplicaciones
Directory Storage en Laravel
La directory storage contiene diferentes tipos de archivos generados automáticamente por el framework Laravel (log, caché...). En el interior, estos archivos están "segregados" en los subdirectorios de aplicación, framwork y logs.
La directory storage/app/public, en particular, se puede usar para guardar archivos creados por los usuarios de la aplicación (por ejemplo, fotos de perfil cargadas) que luego deben ser de acceso público.
Directory Test en Laravel
La directory test contiene las pruebas automatizadas. Laravel usa PHPUnit para manejar pruebas unitarias y funciones.
Directory Vendor en Laravel
La directory vendor, como cada proyecto Composer, contiene las dependencias y el archivo autoload.php
Contenido de la directory App en Laravel
El directory app contiene la mayor parte del código y las características específicas de un proyecto de Laravel. En un proyecto estándar de Laravel, el directory app aloja las clases de PHP del namespace App y se cargan automáticamente a través de Composer.
Dentro de la directory app hay varios otros subdirectorios, que agrupan las diversas clases de PHP que necesita la aplicación según el tipo de clase administrada por Laravel. Veremos el significado específico y el uso de Model, Controller y más, más adelante en esta guía. Por ahora basta con pensar que si necesitamos agregar una nueva página HTML a nuestra aplicación Laravel y esa página corresponde a una determinada URI, casi seguro tendremos que agregar una nueva clase en el directorio app/Http/Controllers que indicará cómo comportarse cuando llega una solicitud para el nuevo recurso.
Contenido directory App
Veamos algunos de los principales subdirectorios de aplicaciones.
Directory App/Console en Laravel
La directory Console contiene comandos Artisan personalizadosde la propia aplicación. Un ejemplo típico es un comando que permite añadir un nuevo usuarioa nuestra aplicación.
Directory App/Exceptions en Laravel
La directory Exceptions contiene los handler de excepciones de la aplicación y también es el lugar recomendado para definir excepciones específicas lanzadas por su aplicación.
Directory App/Http en Laravel
La directory Http contiene todas las clases y la lógica necesaria para gestionar las peticiones (HTTP) que llegan a la aplicación. Controller, middleware y form son definidos en esta directory.
Directory App/Models en Laravel
La directory Model contiene las clases de los modelos Eloquent, la biblioteca ORM ofrecida de default con Laravel. Eloquent permite interactuar con los database de manera simple: para cada tabla presente en el database existe un “modelo” (Model) correspondiente que se utiliza para interactuar con la tabla. Las clases modelo agregadas en este directorio permiten consultar, insertar, modificar y eliminar entradas en la base de datos.
Comandos Artisan make en Laravel
Aunque es posible agregar manualmente nuevas clases de PHP dentro del directorio de la directory app, puede ser más conveniente confiar en el comando Artisan make cuando es necesario crear una nueva clase de cierto tipo.
La distinción en varios directorios en la directory app también está relacionada con la clase heredada por archivos individuales. Supongamos, por ejemplo, que queremos crear un nuevo Model para guardar el contenido de un formulario de contacto en la base de datos. Podemos usar Artisan para crear este nuevo modelo.
php artisan make:model FormContact
Se crea un nuevo archivo app/Models/FormContact.php con el siguiente contenido
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class FormContact extends Model
{
use HasFactory;
}
La clase para el nuevo modelo, mientras está vacío, ya está configurado para heredar la clase Model de eloquent. De manera similar, es posible que otras clases creadas con artisan make ya tengan implementaciones de referencia de las funciones que necesita la clase que heredan.
La lista de entidades que se puede crear en el proyecto con Artisan está disponible al ejecutar php artesanal list make.
Otros archivos de proyecto en Laravel
Además de los archivos necesarios para gestionar clases PHP y dependencias Composer, en el template de un proyecto Laravel está también disponibles:
- file .gitignore configurado específicamente para proyectos Laravel
- file package.json y vite.conf.js para gestionar eventuales asset JavaScript y CSS
- file phpunit.xml para configurar la ejecución de PHPUnit
- file .evn y .env.example para definir las variables ambientales utilizadas por la configuración del proyecto
Anterior
6 El ecosistema Larave..Siguiente
8 Laravel y el ciclo d..