En Diciembre 2021, para cerrar el año bien arriba, nos encontramos online con el PHPMad para charlar acerca del uso de PHP Composer en el contexto de un sistema multi-desarrollador, como WordPress, Joomla, o PrestaShop entre otros. En esta situación, la aplicación de prefijos PHP a los namespaces es una necesidad que evita los errores por conflictos de nombres. Para solucionar estos problemas y automatizar el PHP Prefixing, presenté nuestro servicio de PHP-Prefixer.
Este es el vídeo de la presentación:
En este taller hablamos de:
- ¿Qué es Composer?
- Motivación del uso de Composer
- ¿Cuál es el problema?
- Usando Composer en un plugin WordPress
- Cómo usar Prefijos en el código fuente PHP
- Conclusión
Slides: ppub.link/usandocomposer
¿Qué es Composer?
- Un Administrador de Dependencias (Librerías)
- Un Administrador de Paquetes a nivel de aplicación
- Está fuertemente inspirado por Node.js's "npm" y Ruby's "bundler"
Packagist - Estadísticas
- 323 K Packages
- 1600 M Installs/mo (Septiembre 2021)
Paquetes Destacados
Package Name | Downloads |
---|---|
symfony/console | 259 558 850 |
guzzlehttp/guzzle | 227 583 337 |
monolog/monolog | 251 635 763 |
phpunit/phpunit | 219 664 109 |
nesbot/carbon | 147 951 475 |
league/flysystem | 133 508 404 |
laravel/framework | 114 282 476 |
La Motivación del Uso de Composer
- Compartir Código Abierto y Buenas Prácticas ✔
- Adoptar las innovaciones PHP más recientes ✔
- Usar frameworks populares y probados ✔
- Separación de Intereses (SoC) ✔
- Centrarse en el desarrollo de negocio ✔
- Mejor definición del Dominio ✔
- Desarrollar independiente del CMS ✔
Composer como una
"Herramienta" de Comunicación
- Acceso al hub de Packagist
- Acceso directo a Repositorios Públicos/ Privados
- Uso de Autoloaders Estándars
FIG PSR-4 Estándar
Fully Qualified Class Name | Namespace | Directory | File Path |
---|---|---|---|
\Acme\Log\Writer\File_Writer | Acme\Log\Writer | ./acme-log-writer/lib/ | ./acme-log-writer/lib/File_Writer.php |
\Aura\Web\Response\Status | Aura\Web | /path/to/aura-web/src/ | /path/to/aura-web/src/Response/Status.php |
\Symfony\Core\Request | Symfony\Core | ./vendor/Symfony/Core/ | ./vendor/Symfony/Core/Request.php |
\Zend\Acl | Zend | /usr/includes/Zend/ | /usr/includes/Zend/Acl.php |
¿Cuál es el problema de usar Composer en un CMS?
Si dos desarrolladores independientes trabajan con Composer ...
- Desarrollador A ➡ guzzlehttp/guzzle:^5.3
- Desarrollador B ➡ guzzlehttp/guzzle:^7.4
Dos desarrolladores independientes pueden elegir una versión de biblioteca diferente o bibliotecas con los mismos espacios de nombres, y el administrador del sitio puede instalarlas en el mismo sitio.
Si desarrollo un sistema 2019 y luego vuelvo a trabajar en 2021 ...
- Año 2019 ➡ guzzlehttp/guzzle:^5.3
- Año 2021 ➡ guzzlehttp/guzzle:^7.4
El mismo desarrollador "por tiempos" puede tener que desarrollar con diferentes versiones.
Pueden encontrar la presentación completa en este link: https://blog.php-prefixer.com/usando-composer-en-un-cms-gracias-al-php-prefixing/#/
Una gran charla del PHPMad. ¡Espero poder repetir pronto! Para poder seguir la actividad del grupo, lo pueden encontrar en Meetup: https://www.meetup.com/es-ES/phpmad