Estructura de un proyecto Laravel


Lección 7 / 8

Estructura de un proyecto Laravel

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.

Contenuto nuovo progetto Laravel

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, JavaScriptCSS 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.

Contenuto directory App

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 .env.example para definir las variables ambientales utilizadas por la configuración del proyecto
Guía Laravel en español 1 ¿Qué es HTTP? 2 ¿Qué son las solicitudes HTTP? 3 ¿Qué son las respuestas HTTP? 4 Administrador de dependencias Composer 5 Laravel, el framework para los artesanos de la web 6 El ecosistema Laravel 7 Estructura de un proyecto Laravel 8 Laravel y el ciclo de vida de las solicitudes

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad