Newsletter para devsEntra

Laravel series I: El modelo MVC

laravel-modelo-vista-controlador

Es el momento de comenzar una nueva serie y esta vez se viene una buena.

La historia de los framework PHP es tan larga como el lenguaje en si.

En todo este tiempo hemos pasado por frameworks que han han sido más o menos famosos, han tenido su robustez y número de adeptos a la par.

Entre los más famosos podemos destacar:

  • Zend
  • Mojavi
  • CakePHP
  • CodeIgniter
  • Symfony
  • Kohana

Pero si bien, cuando parecía que nadie podía innovar en el mundo de los framework PHP, allá por el año 2011 aparece la versión 1 del framework Laravel.

Estos son los links a toda la serie:

Nacido como sustituto del framework CodeIgniter, Laravel se caracteriza por un código cuidado que implementa un modelo vista controlador (MVC), fuertemente ligado a la orientación a objetos y que implementa con facilidad funcionalidades que no todos los framework de la época implementaban, como la autorización y la autenticación de usuarios.

Cabe decir que estas no son sus únicas bazas hoy en día.

Como introducción, vamos a dar un repaso a la arquitectura en la que este framework se basa.

Es importante entender el modelo MVC para que entendamos cómo funciona Laravel en sus entrañas.

El modelo vista controlador

Como hemos señalado anteriormente, el modelo vista controlador está fuertemente ligado a la programación orientada a objetos e intenta implementar una arquitectura que se basa principalmente en separar:

  • Los datos.
  • La lógica de negocio (la parte del código que interacciona entre los datos y las vistas a través de eventos).
  • Las vistas (lo que el usuario puede ver por pantalla).

Si eres un programador más enfocado a la programación funcional (programación a través de funciones), el modelo MVC te puede resultar chocante al principio, es por eso que te aconsejo que tengas una buena base de programación orientada a objetos antes de entrar en el mundo Laravel.

No es necesario que seas un crack de la POO, pero al menos tener una comprensión base de esta arquitectura.

Una vez tengas unas nociones sobre POO, practicar con un pequeño proyecto en Laravel te ayudará a entender esta lógica de programación aún más, ya que Laravel te ayuda con esta acción a través de un sistema de carpetas muy claro en el que desde el primer momento ves claramente qué cosa va en qué lugar.

El modelo

Hablar de modelos en Laravel es hablar de nuestra estructura de datos y hablar de datos en programación orientada a objetos es hablar de los ORM (object-relational mapper).

Los ORM permiten tener una declaración de objetos en código que tienen su espejo en la base de datos que decidamos utilizar.

Así, cada modelo declarado en Laravel corresponde a una tabla dentro de tu base de datos y gracias al ORM de Laravel, podemos insertar, actualizar o borrar datos dentro de nuestro sistema de persistencia.

Gracias a este ORM, tenemos la capacidad de tener diferentes modelos en nuestra aplicación. Algunos ejemplos son: usuarios, clientes, productos, etc. que tendrán propiedades que serán los campos de nuestra base de datos.

El ORM utilizado por Laravel se llama Eloquent.

Eloquent permite realizar acciones contra diversos motores de bases de datos: MySQL, PostgreSQL, SQLite y SQL Server (estos motores son los implementados por defecto dentro del framework).

Los modelos de Laravel viven dentro del directorio app\Models.

El controlador

En lugar de incluir toda la lógica de programación, la que gestiona los eventos de tu aplicación, en tu propio sistema de carpetas:

¿porqué no ceñirse a un sistema que permita obtener las peticiones del navegador y devolver resultados de una manera automática?

Esto es lo que implementa Laravel con su sistema de controladores, una gestión de peticiones a través de las rutas declaradas en la aplicación y una devolución de respuestas y todo correctamente implementado dentro de nuestra aplicación.

Además, gracias a la implementación del estándar PSR, podemos ir olvidándonos de tener que hacer includes del librerías externas y propias, y tener que vivir el infierno de saber desde dónde se realiza la llamada para escribir los odiados ..\\..\\.

Gracias a PSR todo está incluido dentro de un espacio de nombres (namespace) y esto permite hacer que las llamadas a controladores propios, librerías, etc. sea una gozada. Así como os lo digo, una gozada.

Os lo dice alguien que ha sufrido mucho con los include_once()

Hablando de librerías externas, decir que la instalación de librerías dentro de nuestra aplicación mediante composer, es coser y cantar con Laravel. Lo veremos en otro capítulo de nuestro Laravel series.

Los controladores en Laravel viven en app\Http\Controllers.

La vista

¿Ya sólo nos quedaba una cosa, verdad? ¿Cómo mostramos la información al usuario?

Si estáis pensando en tener que recoger la información en HTML a través de $_GET[]y $_POST[], os podéis ir olvidando, vienen al rescate las plantillas.

El sistema plantillas por defecto de Laravel se llama Blade y viene para quedarse.

Gracias a BLADE, podemos hacer llamadas a plantillas que mostrarán la información en HTML al usuario pero que son capaces de aceptar la información que es enviada desde los controladores.

Recordad que los controladores son el punto intermedio entre las rutas que lanza el usuario y las vistas, donde además se aplica toda la lógica de programación.

No sólo eso, las vista se pueden llamar también desde las rutas directamente y estas aceptan la inyección de variables con valores a mostrar al usuario.

Blade es el sistema de plantillas por defecto, pero podemos instalar otros sistemas de plantillas de terceros como: Twig, PlatesPHP, Smarty, etc.

Las vistas en Laravel viven en resources/views.

Laravel series

Espero que este artículo os haya servido como pequeña introducción al sistema Laravel y entender un poco mejor la arquitectura en la que se basa, o como ellos mismos lo llaman:

El framework para artesanos de la web.

Si te gusta la programación orientada a objetos y te decantas por PHP, el Modelo Vista Controlador te va a hacer sentir cómodo, y personalmente pienso que es el máximo exponente de la abstracción de datos.

Dentro de esta serie vamos a aprender cómo instalar Laravel, implementar autenticación de usuarios, instalar librerías de terceros, implementación de frameworks de Front-end, etc.

Si todavía os habéis quedado con más ganas, os invito a a un curso dentro de la zona premium de Daniel Primo donde podéis encontrar información ampliada sobre las bases del framework PHP Laravel.

Escrito originalmente por: Juan José Ramos

Imagen de Daniel Primo

Daniel Primo

CEO en pantuflas de Web Reactiva. Programador y formador en tecnologías que cambian el mundo y a las personas. @delineas en twitter y canal @webreactiva en telegram

12 recursos para developers cada domingo en tu bandeja de entrada

Además de una skill práctica bien explicada, trucos para mejorar tu futuro profesional y una pizquita de humor útil para el resto de la semana. Gratis.