Amigos, tenemos buenas noticias. En agosto, en OTUS lanzamos un nuevo curso: "Framework Laravel" , pero había tanta gente que quería estudiar que no todos lograron ingresar al grupo. ¡Una nueva transmisión comienza a fines de octubre! Estamos esperando a todos y, tradicionalmente, en la víspera del comienzo del curso, compartimos material útil.

En este artículo nos familiarizaremos con los fundamentos teóricos de Laravel, con el marco en sí, con su historia y con los conceptos básicos y conceptos que se utilizan en él. Este artículo está dirigido a principiantes que ya dominaron los conceptos básicos de PHP, intentaron escribir su primer sitio, por ejemplo, con un pequeño sistema CMS, pero aún no han intentado trabajar con marcos PHP y no entendieron las principales ventajas que ofrecen.
Entonces, Laravel es un marco web relativamente nuevo (el primer lanzamiento ocurrió en 2011). Laravel tomó lo mejor de otro marco de back-end, como Rails, pero ahora Laravel ya lo ha superado en términos de popularidad. Al momento de escribir este artículo, la última versión es la 6.

No es un marco, sino un ecosistema completo
¿Qué significa esto? Si solo hubiera estado involucrado en el desarrollo Frontend antes, compararía Laravel con Angular: literalmente, desde una línea que genera un nuevo proyecto para usted, obtiene casi todo en la caja (por supuesto, sin la parte frontal del proyecto, pero 2-3 equipos más y resultará ser en su lugar). En lo que respecta al desarrollo de PHP en sí mismo, Laravel tiene casi todo lo que necesita para crear una aplicación de fondo confiable: PHPUnit es un marco para pruebas, Artisan es una interfaz de línea de comandos para la migración de bases de datos, la creación de modelos y el resto de la configuración aplicaciones, un servidor Homestead integrado, en el que puede crear un entorno virtual, así como trabajar con enrutamiento, procesamiento de middleware, así como una cómoda vista de enlace con plantillas Blade.
Intentaremos analizar todos los conceptos complejos en orden.
Les recuerdo: este artículo es solo una introducción teórica para principiantes. Ejemplos prácticos estarán en las siguientes partes .
Homestead
La filosofía de Laravel es brindarle la máxima cantidad de herramientas prácticas listas para usar, y es excepcionalmente conveniente, confiable y fácil de usar. Es por eso que Homestead es uno de los primeros en ser mencionado en la documentación.
Laravel Homestead es un Vagrant-box preinstalado. Que es esto El lector probablemente utilizó los ensamblajes de XAMPP, Abyss Web Server o descargó todas las piezas necesarias para que el servidor funcione (Apache, PHP, PHPMyAdmin, MySQL y mucho más) de forma independiente. Puede encontrar la lista completa de instalados dentro de Homestead
aquí . ¿Por qué se hace esto de esta manera? Homestead crea una especie de "entorno virtual" que se ejecuta en el mismo entorno que en el servidor y con los mismos programas. Homestead recrea rápida y fácilmente sus cajas "virtuales", y no tiene que preocuparse por mucho tiempo si accidentalmente rompe algo.
Sin embargo, Homestead Laravel no termina ahí. Si está utilizando Mac OS, debe probar el Valet minimalista, que no tiene tantas funciones listas para usar, pero es mucho más fácil de instalar. Y también una gran cantidad de paquetes adicionales: ¡este es un ecosistema completo!

Migración de base de datos
La frase "Migración de la base de datos" suena probablemente algo aterradora para un principiante. Espero que el lector sepa para qué sirve la base de datos (en principio, obviamente, para almacenar información) e incluso escribió en su vida algo más que
"SELECCIONAR * DE LOS Clientes" en los comandos SQL. Eso debería ser suficiente.
Entonces, la migración es un tipo de sistema de control para transferir sus tablas a la KB usando el constructor de tablas. La migración le permitirá evitar errores y conflictos durante la construcción de tablas en la base de datos para un proyecto grande junto con miembros de otro equipo. Además, esto le permitirá interactuar con la base de datos sin utilizar herramientas como MySQL WorkBench o PhpMyAdmin, sino directamente desde el código, según las necesidades de su proyecto en las tablas de datos. Agregar y quitar tablas se registra en el historial de migraciones, y ahora al menos los tímpanos tendrán un dolor de cabeza menos.


ORM
ORM es un sistema de mapeo relacional de objetos que asocia bases de datos con conceptos de programación orientados a objetos.
A primera vista, suena aterrador, pero esto está directamente relacionado con la migración de bases de datos: cada clase tiene su propia clase, un modelo que se usa solo para trabajar con esta tabla. Esto permite no generar trabajo innecesario en la base de datos, sino interactuar con él directamente desde el proyecto. Como resultado, resulta más conveniente y más confiable. Por supuesto, tomará algún tiempo dominar los comandos y características de la generación de modelos, pero tomará mucho más crear un proyecto grande con una gran cantidad de tablas.
Blade - plantillas: una vista conveniente de la vista
Blabe: las plantillas brindan la oportunidad de vincular convenientemente sus vistas de la vista. Así es como se vería en PHP nativo:
<?php include($_SERVER['DOCUMENT_ROOT']."/shop/includes/header.inc.php"); ?> <div class="catalog"> <div class="catalog-filters"> </div> <div class="catalog-products"> </div> <div class="catalog-pagination"> </div> </div> <?php include($_SERVER['DOCUMENT_ROOT']."/shop/includes/footer.inc.php"); ?>
<html> <head> </head> <body> @extends('header') @extends('catalog') @extends('footer') </body> </html>
De acuerdo, se ve mucho más ordenado! Por supuesto, de hecho, este es el código del controlador y la exportación de las plantillas Blade restantes, pero en un proyecto grande solo será más conveniente.

Buen asistente artesano
Artisan es una interfaz de línea de comando que se envía con Laravel. Le permite generar modelos, controladores, nuevas pruebas, notificaciones, directamente desde la línea de comandos. Esto es mucho más conveniente que copiar una plantilla de clase desde algún lugar o incluso escribir con bolígrafos desde algún lugar.
Prueba de aplicación
Si desea desarrollar sus proyectos a través de TDD / BDD (desarrollo a través de pruebas / desarrollo a través del comportamiento), entonces hay PHPUnit en el kit (se admiten pruebas como Browser / Unit / Feature), así como un paquete para generar contenido falso falso (útil, por ejemplo, al probar la base de datos, porque no tiene que llenarla con contenido usted mismo, que el usuario generalmente agrega allí).
Muchas cosas agradables
¿Desea que la autenticación a través de las redes sociales aparezca rápidamente en su aplicación? No hay problema, Laravel Socialite corre al rescate. ¿Quieres configurar el almacenamiento en caché? No hay problema, nada más sacarlo de la caja. ¿Tiene muchos proyectos alojados en varios servicios VPS? Laravel Forge en su lugar. ¿Necesita WebSockets, por ejemplo, para chatear? No hay problema Y así puede continuar por mucho tiempo.
¿Por qué debería enseñar este Laravel?
Ahora Laravel, sin duda, ocupa el puesto del framework PHP más importante. Ahora, según Github, los repositorios con Laravel son alrededor de 195k frente a 35k para Yii y 43k para Symfony. Puede que esta no sea la comparación más honesta, pero ¿por qué no probar Laravel entonces?