Conceptos para entender Composer

Conceptos de Composer

Comparte en

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... :)

Comparte en

Creado por: Venezuela Italo Morales

CEO & Founder de Rimorsoft Online

Más información


Actualizar registros con LARAVEL y VUEjs

Laravel VUE.js VUE.js 2 0 comentarios

Tenemos que continuar con el proceso de edición de un registro y es por esto que en este video vamos a crear el bloque de código necesario para realmente actualizar en la base de datos utilizando la tecnología de Laravel y Vue.

Formulario para Editar con LARAVEL y VUEjs

Laravel VUE.js VUE.js 2 0 comentarios

Vamos a preparar el terreno para la edición de un registro de nuestra lista de tareas, es decir crearemos el formulario y su respectiva ventana flotante con la función edit para preparar los datos en Vue.

Guardar datos con LARAVEL y VUEjs – Método STORE

Laravel VUE.js VUE.js 2 0 comentarios

En este video vamos a continuar con el formulario de creación para añadir una nueva tarea a nuestra base de datos, utilizando Vue para hacer el al llamado al método store() del API creada en Laravel.

Formulario de creación con ventana Modal - Laravel y Vuejs

Laravel VUE.js VUE.js 2 0 comentarios

Vamos a dedicarnos en el diseño para preparar la vista de nuestro formulario de creación, utilizando la tecnología de Bootstrap con una ventana Modal que aparece al hacer clic en el botón para crear una nueva tarea.