Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

Composer / el Dependency Manager de PHP

composer

Antes que nada pido disculpas a quienes hayan leído este post antes del 8-9-21, ya que tenía conceptos errados y el tema tocado estaba algo difícil de leer y definía a Composer como un gestor de paquetes en vez de un gestor de dependencias.

Package Manager – es usado para configurar el sistema, es decir, configurar el entorno de desarrollo y con este crear múltiples proyectos.

Un ejemplo de Package manager es Chocolatey para Windows, o Hombrew para Mac, en Linux tenemos una gran variedad, así que nombraré algunos Synaptic, RPM, YUM.

Dependency Manager – es específico al proyecto, gestionas las dependencias para ese proyecto y estas serán guardadas en ese proyecto. Cuando creas un proyecto nuevo debes gestionar las dependencias que tendrá ese proyecto desde 0.

¿Qué es Composer?

https://blastcoding.com/que-es-composer/#que_es_composer

Como dije en la versión en inglés es mejor dejar a los creadores que definan lo que es Composer

Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.

https://getcomposer.org/

En español sería: Composer es una herramienta para gestionar las dependencias en PHP. Nos permite declarar las librerías en las cuales dependerá tu proyecto y se encargara de la instalación o actualización de estas por ti.

¿Que es una dependencia?

https://blastcoding.com/que-es-composer/#dependencia

Es una aplicación o librería echa por terceros o nuestra, la cual podemos agregar con composer.

Veamos un ejemplo práctico, digamos que nuestro proyecto usara PHPMailer por ejemplo y dbal esto lo podemos gestionar con composer. Es por eso que es interesante, además de que no estamos copiando y pegando nosotros mismos partes de librerías para que funcione. Con composer todo va a parar a una carpeta llamada vendor la cual tendrá lo necesario para que corran estos módulos.

Instalación.

https://blastcoding.com/que-es-composer/#instalacion

Windows

Para instalar composer en Windows es muy sencillo, hay que bajar el archivo de instalación Setup.exe y ejecutarlo. El instalador bajará, composer y definirá una variable que contendrá el valor de la ruta del entorno, lo que nos permitira llamarlo con el comando composer desde cualquer dirección.

Utilizando Chocolatey

Otra manera de instalar composer en Windows es utilizar Chocolatey esto lo puedes hacer con el comando

choco install composer

También puedes instalar composer atravez de su GUI

Si no posees chocolatey puedes ver como instalarlo aquí: Chocolatey un Package Manager para Windows

Linux-UNIX-OSX

para instalarlo en Linux se utiliza la línea de comandos. Dependiendo de como se quiera instalar son los pasos que se deben seguir, hay 2 maneras de instalarlo.

La primera opción es localmente: para instalarlo localmente solo se debe correr los comandos mostrados en esta página https://getcomposer.org/download/ en consola estando en directorio de nuestro proyecto.

Esto nos bajará un archivo llamado composer.phar en nuestro directorio, luego lo corremos con el comando

php composer.phar

La segunda opción es globalmente:  puede correr los comandos donde sea y luego mover el archivo .phar al directorio /usr/local/bin/composer con el comando:

Correr donde esta composer.phar
mv  composer.phar /usr/local/bin/composer

Ya luego puede correrlo con el comando composer tenga en cuenta que debe usar el comando sudo en algunos sistemas operativos.

Puede saber qué comandos puede usar con composer con el comando

composer list

Recuerde globalmente usa composer y el nombre del comando localmente php composer.phar y el nombre de este.

¿Cómo se usa?

https://blastcoding.com/que-es-composer/#como_se_usa

Lo primero que necesitamos es un archivo composer.json en nuestro proyecto, este archivo describe las dependencias de nuestro proyecto y otras clases de información (metadata) que puede ser por ejemplo licencia, autor, versión, descripción, soporte, etc.

El siguiente es un ejemplo del composer.json de Laravel

(carpeta de pryecto)/composer.json
{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.6.4",
        "laravel/framework": "5.4.*",
        "laravel/tinker": "~1.0"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~5.7"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true
    }
}

Con require estamos diciendo que paquetes son los que requiere nuestro proyecto, luego de definir cuáles requiere podemos correr el comando.

(carpeta de proyecto)
php composer.phar install

De este modo instalaremos todas las dependencias que pusimos como requeridas en require.

Buscando paquetes para nuestro proyecto

https://blastcoding.com/que-es-composer/#paquetes_de_terceros

Por otra parte, te estarás preguntando ¿cómo sé qué paquetes puedo usar?, ¿dónde buscarlos?, y ¿cómo sé qué hacen? Esos paquetes lo puedes encontrar en la siguiente página https://packagist.org/

si deseas ver un ejemplo de uso de composer puedes ver https://blastcoding.com/utilizando-el-paquete-fakerphp/

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category