Conceptos para entender Composer

Conceptos de Composer

En youtube y Slack me han preguntado mucho sobre permisos de usuarios, manejar grupos, hacer sistemas real time, laravel y socket, etc... y esto está bien, pero además quiero enseñarte temas como este para que salgas mas temprano que tarde de la zona de PROGRAMADOR ENTUSIASTA (Junior). Así que lee y aprecia estos temas por muy teoríco que parezcan.


En este post hablaremos sobre conceptos detrás de Composer. Realmente que es ¿es un software? ¿qué hace en realidad? y más...

Hay un artículo de menor nivel sobre composer aquí miralo y luego vuelve para continuar :)

¿Listo?

¡GENIAL... Continuemos!

Hablando de Composer ¿has tenido experiencia creando aplicaciones PHP desde cero? o ¿solo lo has usado Composer para instalar Laravel y paquetes?. No importa si solo has trajado con Composer gracias a Laravel, la idea es sincerarnos y así ayudarte mucho a entender bien sobre este mundo.

Cuando creamos un sistema en PHP no queremos reinventar la rueda, muchos problemas ya han sido resueltos como por ejemplo: enviar email, guardar en una base de datos, etc. Ahí es donde Composer es realmente valioso. Al escribir aplicaciones PHP desde "cero", en realidad no empezamos desde cero (y es la idea)... El éxito es gastar nuestro tiempo en el sistema en sí y no en solucionar "cómo enviamos un email" o "cómo guardamos en la base de datos".

Puede sorprenderte el hecho de que no hayas comenzado a programar y ya tengas millones de piezas de código utilizable. ¡Gracias a Composer no tenemos días tristes!. Dicho esto, comencemos con los conceptos.

Gestión de Dependencia

Imaginemos: Podrías descargar y agregar al proyecto los paquetes de forma manual, es decir, creamos la carpeta, pegamos el paquete (todo dentro de vendor/), cargamos las clases, inicializamos variables, y quizás muchas mas cosas hasta que por fin el sistema funcione. Pero, dentro de un año más o menos hay que actualizar y al hacerlo nuevamente manual nuestro sistema explotará, lo creas o no...

Hay cosas peores, preguntarnos ¿cuál dependencia es la que está fallando? ¿cuál actualizo? AUXILIOOOO... En realidad es muy díficil resolver todo esto y no queremos lidiar con todos estos problemas. Aquí es donde llega el Composer transformado en Super Saiyajin Blue y listo para entrar con la Doctrina egoísta para ayudarnos y así poder seguir adelante amando esta profesión... Composer se ocupa de esto y maneja todas las dependencias por nosotros, los instala, actualiza, inicializa y todo tomando en cuenta las versiones actuales y las soportadas.

Clase de carga automática - Autoloading

Composer registra automáticamente las clases para posteriormente usar. Tener que incluir cada clase antes de que podamos utilizarla es engorroso, repetitivo y ensucia nuestro código con un montón de innecesarias instrucciones include, require y require_once.

Esto es Autoloading ¿No es genial?

Colaboración en equipo

Una razón más para usar Composer es el trabajo en equipo.

Contamos con un archivo que define todos los paquetes junto a su versión. Es decir, detalla paquete a paquete y las versiones exactas, estamos hablando de composer.json. Esto significa que con una instalación rápida se ejecuta la versión exacta de todas las dependencias a cualquier miembro del equipo.

No más casos de este tipo

  • "Amigo, ¿qué necesito para ejecutar el sistema?"
  • o "tal vez necesito para actualizar mis paquetes"
  • o la peor "en mi computador si funciona".

Composer se encargará de esto por ti.

Paquetes

Composer = Paquetes. Los paquetes son pequeños directorios de código que han sido creados para servir o solucionar un problema en particular. Los paquetes de Composer están limitados solo por la creatividad del autor y hay diferentes tipos de paquetes, veamos:

Paquetes de aplicaciones

Podrías argumentar que esto no debería llamarse paquete. Sin embargo podemos decir que son proyectos impulsados por Composer. Los paquetes de aplicaciones contienen un composer.json solo para listar otros paquetes como dependencias o aprovechar la gran capacidad de carga automática de clases de Composer (Autoloading).

Estos paquetes no están destinados a ser redistribuibles. Es tu proyecto, es tu bebé y puede ser la base de código confidencial, o algo experimental, pero no es para compartir.

Este tipo de paquetes podría ser Laravel, Symfony, Spark, etc (aunque se distribuyen). Un ejemplo mas claro sería el proyecto Rimorsoft Online, es un paquete de aplicación que usa a su vez muchos otros paquetes.

Por otro lado, no te preocupes por la implementación, solo debes saber que estos paquetes contienen código y las clases que deseamos utilizar. Sé feliz, Composer descarga y carga de forma automática todo por y para nosotros.

Paquetes de dependencia

Este es el tipo por defecto y es simplemente copia del paquete en el directorio vendor/ (instalación básica de un paquete). Una dependencia o paquete son los 'redistribuibles' como el paquete para generar pdf.

Énfasis: No es nuestro proyecto web. Son librerias o componentes distribuible y reutilizables. De hecho el formato de un paquete de aplicación y de un paquete de dependencia no es muy diferente, incluso es casi idéntico. Se puede decir que un paquete de dependencia es un kit de desarrollo para resolver un problema y proporciona una funcionalidad específica, y un paquete de aplicación es un sistema completo (un proyecto web completo).

En otras palabras, un paquete de dependencia es un directorio de cógido para redistribuir que está destinado a hacer mas fácil la vida de otros programadores.

Por favor no te preocupes, es un proceso bastante simple y la experiencia te ayudará a manejar estos conceptos.

Recuerda comentar y compartir... :)

Adquiere en preventa y aprovecha un gran descuento TDD en Laravel

Comparte en

Creado por: Venezuela Italo Morales

Profesor de #Laravel y #PHP en Rimorsoft Online

Más información


Validación de registros duplicados en tabla intermedia

Hola,

Necesito de su ayuda estoy tratando que un request valide un registro para que no sea repetido, este esta compuesto por tres llaves foraneas(instituto_id, carrera_id, campus_id). les dejo el request: ```php return [ 'instituto_id' => 'required|numeric|min:1', 'carrera_id' => 'required|numeric|min:1', ...

El auth de laravel trabaja con $_SESSION?.

el auth de laravel trabaja basado en tokens o con el objeto session de php ...

Rutas de Laravel no funcionan

Buenas a todos, tengo un problema, ultimamente, cada vez que creo un nuevo proyecto de Laravel las rutas de este no funcionan. Por ejemplo: si creo el proyecto, éste se crea, pero al agregarle el sistema de autenticación: "auth" se generan tanto las rutas en el archivo web.php y las vistas. pero si intento acceder a la sección de registro o inicio de sesión me aparece el e...

form request ajax laravel (Mostrar error de validación de formulario con ajax)

Hola, tengo una consulta por hacer. Quisiera conocer sus opiniones, sobre como mostrar los errores de validación con ajax cuando utlizo la clase Form Request. Debo decir que el mensaje de registrado con éxito si lo muestra, sin embargo los mensajes de error no los he podido mostrar. Gracias

//FORM REQUEST


public function rules()
    {
        return [
     ...