3

Arquitectura de una aplicación en Laravel

2059Puntos

hace 9 años

Laravel es un Framework de rápido desarrollo de apps en PHP y el proyecto más popular en la comunidad PHP a nivel de crecimiento. Invertir en Laravel hoy vale la pena. NO ENTRES EN PÁNICO: Si antes de conocer Laravel, usabas PHP normal, será un pequeño shock dejar de soltar archivos .php donde caiga. Laravel tiene una estructura muy ordenada. Sólo te toma 5 minutos entenderla. Este artículo es una guía para que lo logres. La arquitectura de Laravel es un flujo de comunicación entre el Foundationdel framework, los Services Providers, una estructura de Controllers con Middlewaresy una capa de servicios que se comunica con el acceso a datos del ORM y al final, con la base de datos.

Elementos de la arquitectura básica de una app en Laravel

El Foundation es el núcleo del framework, que en teoría nunca deberías tocar. Es código de Laravel que no es parte de tu app. Está en la carpeta vendor. Pero si usas Composer, se descargará automáticamente. Los Services Providers son la base del inicio de tu aplicación. Están encargados de arrancar tu app y ahí encontrarás la conexión entre el Foundation de Laravel y las rutas de la app, interfaces, objetos de servicios, containers, eventos, errores, etc. La configuración de toda tu app pasa por los Service Providers. Los Middlewares son objetos que cubren las cosas que siempre necesitas en una web app. Cosas como cifrado (encriptación) de cookies, autenticación y usuarios, protección contra CSRF y XSS, etc. El ORM es el acceso a la base de datos. En lugar de escribir SQL directo (que también puedes, si quieres), usa el método de PHP, similar al Active Record de Rails. Las consultas a través del ORM de Laravel ya están optimizadas y te protegerán de vergonzosos SQL Injections. Además de hacerte la vida más fácil.

Estructura de carpetas

Al empezar una nueva aplicación con Laravel, se creará una estructura muy ordenada de directorios que nos facilitará trabajar con él. Con Composer, arrancas esta estructura, ejecutando el comando: [code]composer create-project laravel/laravel mi-proyecto-maravilloso[/code] Esto creará la estructura, en la carpeta donde tengas la linea de comandos. Dentro de una carpeta llamada "mi-proyecto-maravilloso". (El curso de PHP de Platzi trae una clase bonus de Composer) El uso de convención sobre configuración genera un ambiente muy estandarizado que facilita, incluso, el integrar nuevos programadores a tus desarrollos. El directorio de una aplicación de Laravel se ve de la siguiente forma: laravel-structure

app

Esta carpeta es en donde vivirá la mayor parte del código de tu proyecto. La inmensa mayoría del código de tu proyecto será creado acá. Aquí encontrarás directorios como Console, HTTP, que funcionan como una API al núcleo de tu aplicación. Otras carpetas corresponden a patrones de diseño orientado a objetos, que puedes usar dentro de Laravel. Si nunca has usado patrones de diseño, el Curso de PHP y Laravel te los enseña. laravel-app-folder

bootstrap

Esta carpeta no la toca nadie nunca. Son archivos autogenerados por Laravel para arrancar tu app.

config

A diferencia de Symphony, que usa XML y otras cosas feas, Laravel configura con arrays de PHP. Como debe ser. Los archivos donde se declaran esos arrays están en esta carpeta. La configuración común a todos los entornos está acá. En el resto de tu app, puedes leer esto con el objeto Config. Laravel es genial.

database

En Laravel, las bases de datos y su estructura interna requiere ser entendida antes de iniciar a programar. Esto se logra a través de migraciones. Además, existen semillas para generar datos de prueba, entre otras herramientas. Para eso es esta carpeta. Opcionalmente puede ser usada para almacenar una base de datos SQLite. Una opción adicional son Factories, que son clases donde defines objetos y generas datos falsos, que se convertirán en el modelo de datos de tu base de datos.

public

El contenido de esta carpeta será accesible por tus usuarios. Almacena acá los archivos estáticos de tu aplicación. Coloca aquí los archivos html, javascript, css, vídeos e imágenes. Si usas gulp o Laravel Elixir, los archivos serán automáticamente ubicados acá.

resources

Aquí  se guardan los archivos de vistas y raw assets (LESS, SASS, CoffeeScript). Es decir, acá está el Frontend de la aplicación. Además están archivos de traducción, si tienes una app multilenguaje.

storage

Es la carpeta temporal de Laravel. Se autogeneran logs, cache de templates, etc. No te preocupes por ella.

tests

Una de mis secciones favoritas, aquí se guardan las clases responsables de realizar el unit testing a los diversos componentes de tu aplicación. Laravel, por defecto, usa PHP Unit para hacer testing.

vendor

Esta carpeta es administrada por Composer. Aquí verás las dependencias y librerías del proyecto. Aquí vive Laravel. Esto es sólo una pequeña parte de todo lo que puedes aprender en el Curso de PHP con Laravel. Regístrate hoy y aprende a programar aplicaciones con el lenguaje más popular en internet usando uno de los frameworks más poderosos que existen.
Cesar
Cesar
reicek

2059Puntos

hace 9 años

Todas sus entradas
Escribe tu comentario
+ 2
1
24Puntos

ORM ELoquent, Herramienta con la cual, mapeamos nuestra base datos, para realizar los respectivos CRUD’S de nuestras aplicaciones.