




#WomenWhoCode #PHP #Symfony #Architecture #GoLang #DevOps #Python
Sagrario Meneses
Sagrario Meneses
-
Ingeniera en Informática.
-
9 años de experiencia en desarrollo web.
-
Conocimientos en ecommerce.
-
Senior Software Engineer en Wizeline.
-
CI/CD
-
@phpmx @Technolatinas
@WWCodeCDMX

@sagmmd

En el 2000


En el 2010 LATAM






AND...



Los involucrados...

Jordi Boggiano
@seldaek

Nils Adermann
@naderman
¿Qué es composer?
- Abril 2011 - Marzo 2012
- Es un manejador de dependencias por proyecto.
-
Inspirado en:
- NPM (NodeJs)
- Bundler (Ruby)
-
Parecido a:
- Ant (Java)
- Maven (Java)
- Pip (Python)
- Requiere PHP 5.3.2+

https://getcomposer.org/
Composer es una herramienta para gestión de dependencias en PHP. Te permite declarar las bibliotecas de las que depende tu proyecto y las administrará (instalará / actualizará) por ti.






Ventajas
-
Repositorio de código organizado en paquetes (https://packagist.org/).
-
Gestión de dependencias (instalamos un paquete y Composer se encarga de instalar las dependencias).


Ventajas
-
Facilidad para instalar versiones específicas de paquetes y versiones selectivas.

-
Facilidad para actualizar los paquetes instalados y sus dependencias.
{
"name": "smmd/test",
"require": {
"smmd/test-package": "^1.0"
},
"repositories": [
{
"type": "vcs",
"url": “/full/path/to/the/local/smmd/test-package"
},
"authors": [
{
"name": "Sagrario Meneses",
"email": "sagrario.meneses@gmail.com"
}
]
}-
Te permite utilizar repositorios locales.
Ventajas

-
Autoload configurations
Ventajas
"autoload": {
"exclude-from-classmap": [
"/Tests/",
"/test/",
"/tests/"
],
"psr-4": {
MyLibrary\\": "src/"
}
},"autoload-dev": {
"psr-4": {
"MyLibrary\\Tests\\": "tests/"
}
},Instalación
https://getcomposer.org/doc/00-intro.md
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"$ php composer.phar
$ php composer-setup.php --install-dir=bin --filename=composerComandos

$ composer initComandos
{
"name": "smmd/test",
"require": {
"guzzlehttp/guzzle": "^6.3"
},
"require-dev": {
"phpunit/phpunit": "^7.5"
},
"authors": [
{
"name": "Sagrario Meneses",
"email": "sagrario.meneses@gmail.com"
}
]
}
$ composer self updatecomposer.json
example
$ composer search <dependency name>Comandos
$ composer install$ composer update$ composer require package/dependency-name$ composer update author-name/library-namegitignore

-
Rendimiento / Cambios de Arquitectura
- Descarga recursiva del metadata requerido.
- Reducción del número de paquetes versionados en memoria.
- Representación de conflictos en dependencias de forma mas eficiente. (3 reglas vs 1 regla).
- Paralelización de HTTP request con curl multi, para descargas.
- Uso de características de HTTP/2 para reducir vueltas en el server.
- Cambios en el protocolo de Packagist.org reduciendo la información transferida, mejorando el cache y la infraestructura.
Composer 2.0 (24/10/20)
¿Por qué Composer 2?
-
Reproducción y Debug de problemas mas claro y sencillo.
-
Mejoras en el reporte de errores.
-
Actualizaciones amigables.
-
"Keep upgrading as painless as possible"
-
Parciales con restricciones temporales
-
-
Canonical default.
"canonical": false
$ composer update vendor/package:1.0.*
$ composer update --with vendor/package:1.0.*- Mantiene compatibilidad con PHP 5.3 ->
- El composer.lock es interoperable entre versiones
- La mayoría de los comandos son iguales.
Actualizar a Composer 2.0
$ composer self-update --2
// Revertir
$ composer self-update --1- Plugins
- Comprobación de plataforma
- Prioridades del repositorio
- Configuraciones PSR-0/4 "estrictas".
Para tener en cuenta
// Para despliegue a producción
$ composer check-platform-reqs - -> Composer 2.2 requerirá PHP 7.1
¿Puedo tener ambos?
- Plugins no actualizados para 2.0 (aún)...
$ (sudo) cp `which composer` /usr/local/bin/composer1
$ (sudo) composer1 self-update --1$ (sudo) composer self-update --2 $ (sudo) ln -s `which composer` /usr/local/bin/composer2- composer - La última version 2
- composer1 - Una copia de Composer 1
- composer2 - Un symlink a composer
-
GitHub
Automatización
-
GitLab


Links de interés.

-
https://getcomposer.org/ -
https://packagist.com/ -
https://packagist.org/ -
https://blog.packagist.com/ -
https://dependabot.com/php/ -
https://docs.renovatebot.com/php/ -
https://github.com/composer/composer/blob/master/UPGRADE-2.0.md -
https://github.com/composer/composer "Composer 2 with Jordi Boggiano" Symfony UK
¿PREGUNTAS?

El manejador de dependencias de PHP: Composer
By smmd
El manejador de dependencias de PHP: Composer
- 411