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

Si he logrado ver más lejos ha sido porque he subido a hombros de gigantes

—Isaac Newton
  • 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

 

Aníbal Sánchez - Perdido y Encontrado en la Computación

Aníbal Sánchez

  • PHP-Prefixer / Product Manager
  • PHP-Prefixer is an automated online service powered by a complex rule-based system to apply prefixes to Composer dependencies.
  • Extly Tech / Team Leader
  • Empower your project with our web solutions. Today, working on Laravel, Amazon AWS, and Ionic. A Joomla Volunteer.

Follow @anibalsanchez


Aikido Manual Aetaiki - Aikikai


Red Astur de Bloggers

Jonatan Weber - Consultor de Marketing Automatizado