#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=composer
Comandos
$ composer init
Comandos
{
"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 update
composer.json
example
$ composer search <dependency name>
Comandos
$ composer install
$ composer update
$ composer require package/dependency-name
$ composer update author-name/library-name
gitignore
-
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
- 228