Composer se ha convertido en una herramienta esencial para la gestión de paquetes en PHP. Antes de su existencia, el proceso de encontrar e instalar paquetes requería búsquedas manuales en portales como Google. Hoy, Composer centraliza este proceso, permitiendo un manejo eficiente de las dependencias y facilitando la búsqueda y descarga desde su repositorio principal, Packages.org.
¿Cómo se utiliza Composer?
Composer se maneja a través de comandos en la línea de comandos. Al buscar, por ejemplo, un paquete para enviar correos electrónicos, simplemente escribirías "email" en el buscador de packages.org, eligiendo el paquete con las mejores estadísticas de descargas. Esto indica su utilidad y popularidad dentro de la comunidad PHP.
composer require vendor/package-name
¿Qué debes considerar al elegir un paquete?
Reputación y popularidad: Prefiere paquetes con altas descargas y buena reputación en la comunidad.
Compatibilidad de versiones: Asegúrate de que el paquete sea compatible con las versiones de PHP y otros componentes que utilizas.
Documentación y soporte: Verifica la disponibilidad de documentación para comprender mejor el uso y funcionalidades del paquete.
¿Cómo se estructura un paquete en Composer?
Un aspecto clave en la gestión de paquetes mediante Composer es entender su estructura típica. Al acceder al repositorio en GitHub de un paquete, encontrarás:
Archivo composer.json: Define las dependencias del proyecto y es fundamental para su instalación correcta.
Carpeta src: Aquí se ubican las clases del paquete.
Archivos adicionales: Que pueden incluir documentación, configuraciones y otros recursos necesarios para el funcionamiento del paquete.
Ejemplo de un archivo composer.json básico
{"require":{"monolog/monolog":"^2.0"}}
En este ejemplo, se establece como requisito el paquete Monolog.
¿Cómo gestionar paquetes para entornos de desarrollo y producción?
Composer permite gestionar paquetes tanto para entornos de desarrollo como de producción. Esto se realiza utilizando comandos específicos:
Para desarrollo: Utiliza la opción --dev al instalar paquetes necesarios solo para el entorno de desarrollo.
composer require --dev phpunit/phpunit
Para producción: Instala paquetes necesarios para el funcionamiento de la aplicación en el entorno en el que los usuarios interactuarán.
composer require carbon/carbon
¿Qué papel juega el archivo autoload.php?
El archivo autoload.php es parte de la carpeta vendor, generada por Composer. Permite cargar automáticamente las clases y es esencial para que las aplicaciones de PHP funcionen correctamente y sin conflictos de dependencias.
¿Cómo Composer garantiza el manejo adecuado de dependencias?
Composer se encarga de resolver las dependencias de cada paquete, incluso si un paquete depende de otros. Esto asegura un sistema profesional y correctamente configurado, listo para el desarrollo o producción en PHP.
Si te apasiona aprender más sobre Composer y su potencial en la modernización del desarrollo web con PHP, ¡no te detengas aquí! Sigue explorando, experimentando y adquiriendo nuevas habilidades en la gestión de dependencias.
Si ya no quieren un paquete instalado previamente, simplemente pueden ejecutar en la terminal:
composer remove [NombrePaquete]
Gracias, buen dato.
gracias.
La diferencia entre requerir para producción y requerir para desarrollo, es que a veces nosotros como desarrolladores necesitamos hacer pruebas (phpunit) pero realmente eso no nos interesa que esté en funcionamiento en la aplicación en producción, es por eso que dividimos las dependencias entre producción y desarrollo, para que en producción, esas dependencias que no son necesarias no generen "peso" a la aplicación
Gracias, buen dato
Muchas gracias por la aclaración ✌
Ahora entiendo mejor jaja Composer es el equivalente a npm (https://platzi.com/clases/npm/) en PHP pero siento que más especializado.
O maven para java.
Correcto, de hecho Composer está inspirado en NPM.
A como lo veo y entiendo su equivalente en JS es:
PHP JS
vendor -> node_modules
composer.json -> package.json
composer.lock -> package-lock.json
composer -> npm
comando composer require -> comando npm install
Gracias, eso es más claro para los que venimos dle mundo de javascript.
Exacto
exelente aporte
Gestión de paquetes PHP
Composer es la herramienta para manejar las dependencias de PHP
Packagist:
Repositorio principal de composer
Fuente de paquetes de PHP
Buscador de librerías para PHP
Se pueden agregar a nuestro proyecto desde la terminal:
es nuestro buscador donde si nosotros queremos trabajar con correos electronicos simplemente escribimos email y vamos a descargar el que tenga mejores estadisticas, ahí nos va a decir el comando con el cuál lo podemos de descargar a través de la terminal.
PACKAGIST no solo es un buscador, mas bien el repositorio principal de composer, es la fuente de paquetes. Claro, se puede buscar, pero es una funcionalidad de esta misma.
Solo me pasa a mi que tengo que ver cada video 2 veces para enterarme bien? Jajaja
¡Hola! ¡Para nada!
A mí cada vez que un curso dice que dura X tiempo ya calculo que tardaré 4X en terminarlo y aprobarlo.
Personalmente lo miro una vez y tomo apuntes a mano, luego otra vez en caso de no entender algo, una más donde voy haciendo todo lo que hace el profesor y rezo para que no tenga algún error de compatibilidad o bug dando vueltas por ahí :D
Es normal. lo importante es que encuentres la mejor rutina para aprender, si los tienes que ver dos o más veces no importa. Cada persona tiene una forma y método diferente para aprender.
los paquetes son lo mismo que librerías?
en esencia es lo mismo, normalmente las librerías son mas robustas
En esencia es lo mismo, aunque podemos ser más técnicos o exactos y explicar en detalle dependencia, librería y paquete (yo lo mantendría simple).
Anteriormente me descargaba la librería manual y todo un desastre .. Ahora seré un profesional en php con composer :D
La carpeta vendor es para php lo que node_modules es para Javascript. Saludos
Nuget para .NET, PIP para Python, NPM para Javascript, Maven o Gradle para Java
A partir de la clase 10, este curso es Oro 🏆 !!
.
Para ponerse al dia con el desarrollo moderno y profesional de apps en PHP
Gestión de paquetes
Utilizar Composer nos garantiza que la gestión de dependencias de paquetes se haga correctamente.
Para buscar librerías o paquetes de PHP podemos ir a Packagist y ver los comandos que necesito para descargarlos a mis workstage.
Para crear los archivos que necesita composer para nuestro proyecto podemos poner este comando y composer se encargará de crearlo por nosotros
composer require --dev phpunit/phpunit
Hola compañeros, una pregunta, como hago para saber si la dependencia que voy a usar es de desarrollo o de producción? 📌
Hola! Es fácil, si la dependencia es indispensable para que tu proyecto funcione, es dependencia de producción, pero si la dependencia solo te va a ayudar a ti a desarrollar la aplicación, pero que no va a ser necesaria para que la aplicación funcione, es dependencia de desarrollo ^^
¡Buenas!
Lo explico bastante bien el compañero, también en la documentación de la dependencia suele indicar como tratarla según el caso.
No se desanimen yo tuve que iniciar desde la clase 0 hasta esta clase porque no comprendía y hoy ya me siento mas cómodo y he comprendido como usar composer
Opino lo mismo, compañero. En el momento que sientan que no entienden o se aburrieron de avanzar con las clases sin entender mucho, lo mejor es volver a iniciar de nuevo y verán que todo será más entendible. ¡Nunca se desanimen!
Qué bueno fue aprender Javascript a profundidad, esto se me está haciendo súper llevadero
📦 Packagist permite realizar búsqueda de paquetes PHP de forma eficiente, otorgándonos información sobre los mismos.
https://packagist.org/
ya me estoy deseperando, me salta error y no puedo siquiera ponerlo completo en el comentario porque se me corta
este es el error:
The "https://repo.packagist.org/p2/phpunit/phpunit.json" file could not be downloaded: php_network_getaddresses: getaddrinfo failed: Temporar
y failure in name resolution
Failed to open stream: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution
Failed to open stream: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution