Proyecto con dependencias
Estructura
Video del proceso
Pasos explicados
Resultado explicado
Librería
Estructura
Composer
Composer es un Gestor de Dependencias para PHP.
La idea del gestor de dependencias es que el mismo proyecto declara las librerías que necesita para poder trabajar y delega el trabajo relacionado con estas al gestor de dependencias.
Hay multitud de gestores de Dependencia
Maven, Gradle, npm, Pip, Bundler
Hasta la llegada de Composer creo que no había ninguno para PHP. En cierta manera los últimos años el mundo PHP se ha profesionalizado a niveles agigantados. Ha sido una combinación de varias cosas. Las llegada de los frameworks(CakePHP, Symfony, Laravel) , el propio lenguaje ha evolucionado aprendiendo de sus hermanos Namespaces, Traits, etc. Aún así el lenguaje es bastante versátil así que no basta y para ello también han surgido los PSR (PHP Standard Recommendations).
¿Para que sirve todo esto?
Básicamente el resumen sería decir que Composer ha venido para agregar una nueva capa que hay que aprender pero que a corto/medio/largo plazo nos va a quitar muchos dolores de cabeza del desarrollador de PHP. El objetivo es que el desarrollador pueda centrarse en el problema sobre el que desea trabajar y no lidiar con problemas externos.
Proyecto con dependencias
Para entender el concepto he creado un repositorio en Github que no tiene otro objetivo que mostrar cómo funciona este gestor de dependencias.
https://github.com/raultm/project
https://github.com/raultm/project
Estructura
He intentando dejarlo lo más liviano posible para que quede el objetivo quede meridianamente claro.
En este caso el proyecto cuenta con tres archivos
composer.json
Donde indico una dependencia de una librería creada para el mismo objetivo, demostrar lo mínimo indispensable para crear una dependencia de Composer.
index.php
Un archivo en php que hace uso de la dependencia añadida en el composer.json
.gitignore
Composer descarga y añade las dependencias en una carpeta concreta “vendors” dentro de nuestro proyecto y debido a que composer se encarga de gestionar gestionar todo esto no nos interesa añadir esta carpeta en el historial de nuestro repositorio.
Video del proceso
Pasos explicados
Para este ejemplo tenemos unos requisitos sencillos
- Tener un servidor local
- Tener Git instalado
Clonamos el proyecto en la carpeta de los docs de nuestro servidor.
~git clone https://github.com/raultm/project.git
Nos situamos en la carpeta donde se descarga el clone
~cd project
(Opcional) En caso de no tener Composer instalado en el sistema se puede descargar sobre el proyecto.
~curl -sS https://getcomposer.org/installer | php
En caso de seguir esta opción a partir de aquí modificar los comandos que usan ‘composer’ por ‘php composer.phar’. Ejemplo ‘composer install’ por ‘php composer.phar install’
Le pedimos a Composer que se encargue de instalar las dependencias
~composer install
Resultado explicado
Tras las líneas anteriores podemos ver el proyecto funcionando accediendo al navegador en la carpeta concreta. El Proyecto muestra la siguiente línea.
Author :: raultm
Composer ha creado un archivo composer.lock ¿Para qué? Este fichero lo que hace es definir las versiones concretas de las dependencias descargadas. Gracias a este fichero todos los integrantes del equipo compartirán exactamente las mismas librerías en el proyecto y no habrá incompatibilidades por estar parte.
Vale, eso está muy bien pero ¿qué pasa si aparece una nueva versión de una de las dependencias? Pues simplemente debes decir a Composer que se actualice
~composer update
Aparte podemos ver el interior de la carpeta ‘vendors’ donde podemos revisar tanto la estructura montada por composer para el autocargado de las dependencias como las propias dependencias.
Librería
Aparte de saber como montar un proyecto me parece interesante aprender lo mínimo indispensable para crear un módulo propio que podamos reusar en nuestros proyectos gracias a las bondades de Composer.
Podemos comprobar la librería en
Estructura
En este caso tenemos un librería con dos archivos y dos carpetas.
composer.json
La configuración mínima del proyecto en este caso es un nombre para la librería y un marcado para decirle a Composer que el autocargado de nuestra librería es PSR0.
Este archivo será leído por Composer cuando esta librería sea solicitada como dependencia por un proyecto concreto.
phpunit.xml.dist
La configuración concreta para ejecutar los test
src
Carpeta con el código fuente de nuestra librería
test
Carpeta donde se recogen los tests desarrollados para comprobar la funcionalidad de nuestra librería.
Teniendo estas herramientas a nuestra disposición al menos conocerlas para saber si nos interesan utilizarlas o no.
Teniendo estas herramientas a nuestra disposición al menos conocerlas para saber si nos interesan utilizarlas o no.
No comments:
Post a Comment