Composer es una herramienta de gestión de dependencias para PHP. Puede especificar de qué bibliotecas (paquetes) depende su proyecto y Composer las instalará por usted. Composer es un administrador de dependencias, no un administrador de paquetes; esto significa que las bibliotecas (paquetes) se instalan dentro de cada proyecto por separado y no globalmente en el sistema.

¿Por qué necesitas Composer?

En el mundo PHP, existe una tendencia a reinventar la rueda una y otra vez. Esto se debe a que durante algún tiempo no existía un administrador de dependencias conveniente ni un lugar donde poder encontrar soluciones adecuadas. La instalación de bibliotecas de terceros a menudo implicaba la necesidad de buscar e instalar algunas bibliotecas más. Como resultado, a veces era más fácil escribir su propia biblioteca que instalar y mantener la de otra persona.
Composer elimina la molestia de las dependencias y, gracias al repositorio oficial de packagist.org, encontrar el paquete que necesitas es rápido y fácil.

Cómo funciona el compositor

La idea del compositor no es nueva; al desarrollarla, tomamos ideas del administrador de paquetes para node.js - npm y Bundler - un administrador para administrar dependencias en aplicaciones Ruby.

  1. Su proyecto depende de varias bibliotecas
  2. Algunas de estas bibliotecas dependen de otras bibliotecas.
  3. Usted especifica qué bibliotecas necesita directamente
  4. Composer encuentra las bibliotecas necesarias de las versiones que necesita y las instala (en la carpeta del proyecto), mientras instala las bibliotecas necesarias para que estas bibliotecas funcionen.

Dónde encontrar paquetes

De forma predeterminada, los paquetes se descargan del repositorio oficial de packagist.org. Cualquiera puede agregar un paquete allí o descargarlo.
También puede descargar paquetes directamente desde cualquier repositorio git, svn o mercurial, o puede ser simplemente un archivo zip disponible en cualquier dirección.
La biblioteca que se va a instalar no tiene que tener la forma de un paquete Composer.

Declarando dependencias

Supongamos que está creando un proyecto y necesita una biblioteca de registro. Decide utilizar monolog. Todo lo que necesitas para agregarlo al proyecto es compositor.json un archivo que describe las dependencias del proyecto.

( "requerir": ("monolog/monolog": "1.2.*" ) )

Simplemente indicamos que nuestro proyecto requiere la instalación del paquete monolog/monolog de cualquier versión que comience con la 1.2 (por ejemplo, 1.2.1, 1.2.2, etc.)

Lea más sobre las características y el uso de Composer en las siguientes lecciones.

Hola a todos. Hoy hablaremos de ¿Qué son los administradores de paquetes?, y considere uno de ellos: compositor.

Primero, averigüemos qué necesitamos. administradores de paquetes? Los administradores de paquetes ayudan a descargar todos los paquetes, dependencias, algunos marcos y complementos utilizados por el lenguaje de programación a través de la consola en solo un par de líneas. En nuestro caso compositor- Este administrador de paquetes php.

Para mostrarte cómo funciona Composer, descarguemos marco yii

Así que ve al sitio. http://getcomposer.org/ y presione el botón "Empezando". Ahora haga clic Instalación - *nix para configurarlo en Mac o Linux. Abra una terminal y pegue los siguientes comandos:

1) $ curl -sS https://getcomposer.org/installer | PHP

2) $ mv compositor.phar /usr/local/bin/composer

Después de haber hecho todo, ingrese el comando compositor y si tienes una inscripción grande COMPOSITOR y algo de información, entonces hiciste todo bien y compositor instalado correctamente.

instalar compositor en ventanas, siga este enlace https://getcomposer.org/doc/00-intro.md#installation-windows y descargar el instalador. Si obtiene errores de biblioteca durante la instalación, simplemente vaya al archivo php.ini y deshabilita aquellas librerías que no te permiten instalar administrador de paquetes del compositor.

Después compositor instalado, vaya a su escritorio y cree una carpeta llamada "compositor". Ahora en la consola ve a él.

CD de escritorio/compositor/

Para inicializar el compositor, ingrese el comando

inicio del compositor

¿Cual es el punto? La conclusión es que cuando comienzas un nuevo proyecto, no tienes que navegar por la web y descargar todo lo que necesitas. Simplemente ingresa el comando en la consola y todo se descarga automáticamente. Otra ventaja es que algunas bibliotecas dependen de otras bibliotecas, pero ya no necesitas preocuparte por esto, porque. El compositor también los descargará. En proyectos grandes, esto es muy conveniente en el sentido de que si, por ejemplo, llega un nuevo empleado, no es necesario explicarle qué descargar y desde dónde. solo dale json archivo, ingresará el comando en la consola y todo estará instalado.

Sigamos instalando nuestro marco. Como dije, entramos

Buscar un paquete:

Introduzca aquí el nombre de nuestro framework

Buscar un paquete: yii

Verás frente a ti todas las coincidencias que encontraste. compositor. nuestra necesidad yiisoft/yii Número entre corchetes a la izquierda. en mi caso es 0 , lo escribo y presiono enter. A continuación debemos ingresar la versión. ¿Y de dónde descarga el compositor todo esto? Hay un sitio donde se almacenan muchas cosas. http://packagist.org/ Allí, ingresa en la barra de búsqueda. yii y sigue el primer enlace, allí verás que la versión se llama maestro de desarrollo. Escribe esto en la consola y presiona Enter.

¿Confinas la generación?

Encima de este título puede ver cómo se ve el archivo. compositor.json. Este es exactamente el mismo archivo que le entrega a un nuevo empleado.

Entonces, todo nos conviene, presionamos enter.

Ahora si vas a nuestra carpeta de escritorio compositor, verás que nuestro json archivo.

Ahora ingresa el comando en la consola.

Instalación del compositor

Una vez completada la instalación, aparecerá una nueva carpeta en nuestra carpeta de escritorio con el nombre proveedor, donde se almacenan todos los archivos de nuestro framework.

Es muy fácil trabajar con administrador de paquetes del compositor, y lo más importante, ahora no tienes que descargar todo manualmente. basta con hacerlo una vez json y luego úselo para descargar e instalar los marcos, complementos, bibliotecas y más que necesita.

Composer ha revolucionado la gestión de paquetes de PHP y ha ayudado a desarrolladores de todo el mundo a crear código compartido e independiente del marco. Pero aún así, pocas personas van más allá de los conceptos básicos de su funcionalidad, por lo que este artículo intentará resaltar algunos trucos útiles para usarlo.

Instalación global (Global)

Aunque esta opción está disponible en la documentación, Composer puede (y en la mayoría de los casos debe) instalarse globalmente. La instalación global significa que en lugar de:

php compositor.phar algún comando
Puedes en cualquier proyecto simplemente escribir:

Compositor algún comando
Esto hace que sea muy fácil crear nuevos proyectos (por ejemplo, usando el comando crear-proyecto) en cualquier lugar de su sistema de archivos.

Para instalar Composer globalmente, siga estas instrucciones.

Instalación adecuada de dependencias.

Al leer instrucciones introductorias o archivos README, muchos le escribirán algo como:
Simplemente agregue lo siguiente a su compositor.json archivo:
( "requerir": ("miproyecto": "alguna versión") )

Pero este enfoque tiene varios inconvenientes. En primer lugar, un simple copiar y pegar puede provocar errores. En segundo lugar, puede que a un principiante no le resulte obvio dónde colocar este código si ya tiene un archivo grande. compositor.json, y esto también resultará en un error. Finalmente, algunas personas interactuarán con Composer por primera vez y tal vez incluso se encuentren con la línea de comando por primera vez. Por lo tanto, es una buena práctica cubrir todo tipo de casos en los que los principiantes pueden sentirse inseguros (¿tienen un editor gráfico o usarán la línea de comandos? Si es esto último, ¿tiene instalado un editor de texto?, y si es así, ¿cuál?). ¿Uno? ¿Explica usted mismo el procedimiento para editar el archivo? ¿Qué pasa si el archivo compositor.json aún no existe en el proyecto? ¿También describe cómo crear un archivo nuevo?).

La mejor manera de agregar una nueva dependencia a un archivo compositor.json es usar el comando requerir:

El compositor requiere algún paquete/algún paquete: alguna versión
Esto agregará todo lo necesario al archivo de dependencia sin intervención manual.

Si necesita agregar paquetes a una sección requerir-dev, agregue la opción al comando --desarrollador:

El compositor requiere phpunit/phpunit --dev
Además, el equipo requerir admite agregar varios paquetes al mismo tiempo, simplemente sepárelos con un espacio.

bloquear archivos

Archivo compositor.lock guarda la lista actual de dependencias instaladas y sus versiones. De esta manera, cuando las versiones de la dependencia estén actualizadas, otras personas que clonen su proyecto tendrán las mismas versiones. Esto garantiza que todos los que reciban su proyecto tengan un "entorno de empaquetado" idéntico al que utilizó durante el desarrollo y ayuda a evitar errores que puedan ocurrir debido a las actualizaciones de versión.

Además, el archivo compositor.lock contiene el hash del archivo compositor.json, por lo que si actualizas los detalles del autor del proyecto, recibirás una advertencia de que el archivo de bloqueo no coincide. .json archivo. En este caso, el equipo ayudará. actualización del compositor --lock, que solo actualizará el archivo de bloqueo, sin tocar nada más.

Versionado

Al especificar versiones válidas del paquete, puede utilizar la coincidencia exacta ( 1.2.3 ), rangos con operadores de comparación ( <1.2.3 ), combinaciones de estos operadores ( >1.2.3 <1.3 ), “último disponible” ( 1.2.* ), carácter de tilde ( ~1.2.3 ) y signo de intercalación ( ^1.2.3 ).

Las dos últimas indicaciones merecen una explicación aparte:

  • indicación de tilde ( ~1.2.3 ) incluirá todas las versiones hasta 1.3 (no incluido) porque en el control de versiones semántico este es el objetivo de introducir nuevas funciones. En este caso se obtendrá la última de las versiones menores estables. Como dice la documentación, con esta indicación, el solo el último dígito de la versión.
  • especificando el símbolo de intercalación ( ^1.2.3 ) significa literalmente "sólo tenga cuidado con los cambios importantes" e incluirá versiones hasta 2.0 . Con respecto a semver, un cambio importante de versión es el punto en el que un proyecto tiene un cambio importante, de modo que las versiones 1.3 , 1.4 Y 1.9 encajar mientras 2.0 - ya no.
A menos que sepas que necesitas una versión específica de un paquete, te recomiendo usar siempre el formato ~1.2.3 es la opción más segura.

Configuración local y global

Los valores de los parámetros predeterminados no están escritos en piedra. Descripción detallada de los posibles parámetros de configuración ( configuración) ver enlace .

Por ejemplo, especificando:
( "config": ("optimize-autoloader": verdadero))
está obligando a Composer a optimizar el mapa de clases después de cada instalación o actualización de paquetes (o en otras palabras, cada vez que se genera un archivo de carga automática de clases). Esto es un poco más lento que crear el cargador automático predeterminado y se ralentiza a medida que crece el proyecto.

Otra opción útil podría ser archivos-caché-maxsize. En proyectos grandes (como eZ Publish o Symfony), la caché puede llenarse con bastante rapidez. Aumentar el tamaño de la caché permitirá que Composer se ejecute rápidamente durante más tiempo.

Tenga en cuenta que las opciones de configuración se pueden establecer globalmente, en cuyo caso afectarán a todos los proyectos (ver configuración). Por ejemplo, para configurar el parámetro de tamaño de caché globalmente, debe editar el archivo ~/.composer/config.json, o corre:

Configuración del compositor --global cache-files-maxsize "2048MiB"

Generación de perfiles y salida detallada (detallada)

Si agrega un parámetro --perfil a cualquier comando cuando se usa Composer en la línea de comando, entonces la salida contendrá algo más que el resultado final, por ejemplo:

Uso de memoria: 174,58 MB (pico: 513,47 MB), tiempo: 54,7 s
Pero también agregará el tiempo de ejecución del comando y el tamaño de la memoria utilizada al comienzo de cada línea de salida:

Instalación de recursos para Sensio\Bundle\DistributionBundle en web/bundles/sensiodistribution
Utilizo esta opción para identificar paquetes "lentos" y ver cómo mejora o degrada el rendimiento en .

Al igual que el anterior, el parámetro --verboso obligará a Composer a generar más información sobre cada la operación que se está realizando, haciéndole saber que exactamente está sucediendo en este momento. Algunas personas incluso instalan compositor --detallado --perfil alias de comando compositor por defecto.

Fuentes personalizadas

Si su proyecto aún no está en Packagist, a veces solo necesita instalar el paquete desde GitHub (por ejemplo, si el paquete aún está en desarrollo). Consulte nuestra guía para esto.

Cuando tengas es versión de un paquete popular del que depende su proyecto, puede usar fuentes personalizadas combinadas con alias en línea para sustituir su propia rama por un paquete público, como Matthieu Napoli.

Compositor de aceleración

Utilizando el excelente método descrito por Mark Van Eijk, puedes acelerar Composer llamándolo a través de HHVM.

Otra forma es con el parámetro --prefer-dist, lo que hará que Composer descargue versiones empaquetadas estables del proyecto en lugar de clonarlo desde el control de fuente (que es mucho más lento). Esta opción se utiliza de forma predeterminada, por lo que no es necesario habilitarla en proyectos estables. Si necesita cargar un proyecto desde el código fuente, utilice la opción --preferir-fuente. Más sobre esto se puede encontrar en la sección instalar .

Reducir el tamaño de un proyecto de Composer

Si eres desarrollador de proyectos "Composer-friendly", esta parte también te interesará. Según esta publicación en Reddit, puedes usar el archivo .gitattributes ignore algunos archivos y carpetas mientras empaqueta el paquete para el modo --prefer-dist.
/docs exportar-ignorar /tests exportar-ignorar /.gitattributes exportar-ignorar /.gitignore exportar-ignorar /.travis.yml exportar-ignorar /phpunit.xml exportar-ignorar
¿Cómo funciona? Cuando subes un proyecto a GitHub, automáticamente el enlace está disponible Descargar zip, con el que podrás descargar el archivo de tu proyecto. Además, Packagist utiliza estos archivos generados automáticamente para descargar dependencias con la opción --prefer-dist, que luego descomprime localmente (mucho más rápido que clonar los archivos originales del proyecto). Si agregas a .gitattributes pruebas, documentación y otros archivos que no están relacionados con la lógica del proyecto, los archivos especificados no los contendrán, siendo mucho más fácil.

Al mismo tiempo, las personas que desear para depurar su biblioteca o ejecutar pruebas, deberá especificar un parámetro --preferir-fuente.

PhpLeague ha adoptado este enfoque y lo ha incorporado a su "paquete esqueleto"(Esqueleto del paquete), de modo que cualquier proyecto basado en él será automáticamente amigable con el distrito.

espectáculo

Si de repente olvidas qué versión de PHP o su extensión estás usando, o necesitas una lista de todos los proyectos instalados (con una descripción de cada uno) con sus versiones, puedes usar el comando espectáculo con parametros --plataforma (-pag) Y --instalado (-i):

espectáculo del compositor --instalado

$ Composer show --installed behat/behat v3.0.15 Marco BDD orientado a escenarios para PHP 5.3 behat/gherkin v4.3.0 Analizador DSL Gherkin para PHP 5.3 behat/mink v1.5.0 Marco de prueba de aceptación web para PHP 5.3 behat/mink-browserkit -driver v1.1.0 Controlador Symfony2 BrowserKit para Mink framework behat/mink-extension v2.0.1 Extensión Mink para Behat behat/mink-goutte-driver v1.0.9 Controlador Goutte para Mink framework behat/mink-sahi-driver v1.1.0 Sahi. Controlador JS para Mink framework behat/mink-selenium2-driver v1.1.1 Controlador Selenium2 (WebDriver) para Mink framework behat/sahi-client dev-master ce7bfa7 Cliente Sahi.js para PHP 5.3 behat/symfony2-extension v2.0.0 Extensión de framework Symfony2 para Behat behat/transliterator v1.0.1 Componentes de transliterador de cadenas/bootstrap 3.3.2 El marco de interfaz de usuario más popular para desarrollar proyectos responsivos y móviles en la web. componentes/jquery 2.1.3 Biblioteca jQuery JavaScript doctrina/anotaciones v1.2.4 Docblock Anotaciones Analizador doctrina/caché v1.4.1 Biblioteca de almacenamiento en caché que ofrece una API orientada a objetos para muchos servidores de caché doctrina/colecciones v1.3.0 Colecciones Biblioteca de abstracción doctrina/común v2. 5.0 Biblioteca común para proyectos Doctrine doctrina/dbal v2.5.1 Capa de abstracción de base de datos doctrina/paquete-doctrina v1.4.0 Symfony DoctrineBundle doctrina/doctrine-cache-bundle v1.0.1 Paquete Symfony2 para Doctrine Cache doctrina/inflector v1.0.1 Manipulaciones de cadenas comunes con con respecto a la mayúscula y las reglas singulares/plurales. doctrina/instantiator 1.0.4 Una utilidad pequeña y liviana para crear instancias de objetos en PHP sin invocar a sus constructores doctrina/lexer v1.0.1 Biblioteca base para un lexer que se puede usar en analizadores de descenso recursivos de arriba hacia abajo. egulias/listeners-debug-command-bundle 1.9.1 Comando de consola Symfony 2 para depurar oyentes ezsystems/behatbundle dev-master bd95e1b Paquete Behat para ayudar a probar paquetes y proyectos eZ ezsystems/comments-bundle dev-master 8f95bc7 Sistema de comentarios para eZ Publish ezsystems /demobundle dev-master c13fb0b Paquete de demostración para la plataforma eZ Publish ezsystems/demobundle-data v0.1.0 Datos para ezsystems/demobundle ezsystems/ezpublish-kernel dev-master 3d6e48d eZ Publish API y kernel. Este es el corazón de eZ Publish 5. ezsystems/platform-ui-assets-bundle v0.5.0 Dependencias de activos externos para PlatformUIBundle ezsystems/platform-ui-bundle dev-master 4d0442d eZ Platform UI Bundle ezsystems/privacy-cookie-bundle v0. 1 Paquete de integración de banner de cookies de privacidad en eZ Publish/eZ Platform fabpot/goutte v1. 0.7 Un simple PHP Web Scraper friendsofsymfony/http-cache 1.3.1 Herramientas para gestionar la invalidación de caché friendsofsymfony/http-cache-bundle 1.2.1 Establece encabezados de caché HTTP basados ​​en rutas y envía solicitudes de invalidación a tu caché HTTP guzzle/guzzle v3.9.3 PHP Cliente HTTP. Esta biblioteca está obsoleta en favor de https://packagist.org/packages/guzzlehttp/guzzle hautelook/tempded-uri-bundle 2.0.0 Symfony2 Bundle que proporciona un enrutador y un generador de URL compatibles con RFC-6570. hautelook/tempded-uri-router 2.0.1 Enrutador y generador de URL compatible con Symfony2 RFC-6570 imagine/imagine 0.6.2 Procesamiento de imágenes para PHP 5.3 incenteev/composer-parameter-handler v2.1.0 Script de Composer que maneja su archivo de parámetros ignorado instaclick/php -webdriver 1.0.17 PHP WebDriver para Selenium 2 jdorn/sql-formatter v1.2.17 una biblioteca de resaltado PHP SQL knplabs/knp-menu v1.1.2 Una biblioteca de menús orientada a objetos knplabs/knp-menu-bundle v1.1.2 Este paquete proporciona una integración de la biblioteca KnpMenu kriswallsmith/assetic v1.2.1 Gestión de activos para PHP kriswallsmith/buzz v0.13 Liga de cliente HTTP ligera/flysystem 0.5.12 Muchos sistemas de archivos, una API. liip/imagine-bundle 1.2.6 Este paquete ayuda en la manipulación de imágenes usando la biblioteca imagine monolog/monolog 1.13.1 Envía sus registros a archivos, sockets, bandejas de entrada, bases de datos y varios servicios web nelmio/cors-bundle 1.3.3 Agrega CORS ( Cross-Origin Resource Sharing) admite encabezados en su aplicación Symfony2 ocramius/proxy-manager 0.5.2 Una biblioteca que proporciona utilidades para generar, crear instancias y operar en general con Object Proxies oneup/flysystem-bundle v0.4.2 Integra la biblioteca de abstracción del sistema de archivos Flysystem a su Symfony2 proyecto. pagerfanta/pagerfanta v1.0.3 Paginación para PHP 5.3 phpdocumentor/reflection-docblock 2.0.4 phpspec/prophecy v1.4.1 Marco de trabajo burlón altamente obstinado para PHP 5.3+ phpunit/php-code-coverage 2.0.16 Biblioteca que proporciona recopilación, procesamiento y Funcionalidad de representación para información de cobertura de código PHP. phpunit/php-file-iterator 1.4.0 Implementación de FilterIterator que filtra archivos según una lista de sufijos. phpunit/php-text-template 1.2.0 Motor de plantillas simple. phpunit/php-timer 1.0.5 Clase de utilidad para cronometrar phpunit/php-token-stream 1.4.1 Envoltorio de la extensión tokenizer de PHP phpunit/phpunit 4.6.4 El marco de pruebas unitarias de PHP phpunit/phpunit-mock-objects 2.3 .1 Biblioteca de objetos simulados para PHPUnit psr/log 1.0.0 Interfaz común para bibliotecas de registro qafoo/rmf 1.0.0 Marco VC muy simple que facilita la creación de aplicaciones HTTP/servicios web REST sebastian/comparator 1. 1.1 Proporciona la funcionalidad para comparar valores PHP para igualdad sebastian/diff 1.3.0 Implementación de diferencias sebastian/environment 1.2.2 Proporciona funcionalidad para manejar entornos HHVM/PHP sebastian/exporter 1.2.0 Proporciona la funcionalidad para exportar variables PHP para visualización sebastian /global -state 1.0.0 Instantánea del estado global sebastian/recursion-context 1.0.0 Proporciona funcionalidad para procesar recursivamente variables PHP sebastian/version 1.0.5 Biblioteca que ayuda a administrar el número de versión de proyectos PHP alojados en Git sensio/distribution- paquete v3 .0.21 Paquete base para distribuciones Symfony sensio/framework-extra-bundle v3.0.7 Este paquete proporciona una manera de configurar sus controladores con anotaciones sensio/generator-bundle v2.5.3 Este paquete genera código para usted sensiolabs/security-checker v2 .0.2 Un comprobador de seguridad para su compositor.lock swiftmailer/swiftmailer v5.4.0 Swiftmailer, programa de correo PHP gratuito con muchas funciones symfony-cmf/routing 1.3.0 Amplía el componente de enrutamiento de Symfony2 para rutas dinámicas y encadenamiento de varios enrutadores symfony/assetic-bundle v2 .6.1 Integra Assetic en Symfony2 symfony/monolog-bundle v2.7.1 Symfony MonologBundle symfony/swiftmailer-bundle v2.3.8 Symfony SwiftmailerBundle symfony/symfony v2.6.6 El marco PHP de Symfony tedivm/stash v0.12.3 El lugar para guardar su caché. tedivm/stash-bundle v0.4.2 Incorpora la biblioteca de almacenamiento en caché Stash en Symfony. twig/extensions v1.2.0 Funciones adicionales comunes para Twig que no pertenecen directamente al núcleo twig/twig v1.18.1 Twig, el lenguaje de plantilla flexible, rápido y seguro para PHP white-october/pagerfanta-bundle v1.0.2 Paquete para usar Pagerfanta con Symfony2 whiteoctober/breadcrumbs-bundle 1.0.2 Un pequeño paquete de migas de pan para Symfony2 zendframework/zend-code 2.2.10 proporciona facilidades para generar código arbitrario utilizando una interfaz orientada a objetos zendframework/zend-eventmanager 2.2.10 zendframework/zend-stdlib 2.2 .10 zetacomponents/base 1.9 El paquete Base proporciona la infraestructura básica en la que se basan todos los paquetes. Por lo tanto, cada componente depende de este paquete. zetacomponents/feed 1.4 Este componente maneja el análisis y la creación de feeds RSS1, RSS2 y ATOM, con soporte para diferentes módulos de feeds (dc, content, creativeCommons, geo, iTunes). zetacomponents/mail 1.8.1 El componente le permite construir y/o analizar mensajes de correo conforme al estándar de correo. Tiene soporte para archivos adjuntos, mensajes de varias partes y correo HTML. También interactúa con SMTP para enviar correo o IMAP, P. .. zetacomponents/system-information 1.1 Proporciona acceso a variables comunes del sistema, como el tipo y la velocidad de la CPU, y la cantidad de memoria disponible.

Ensayos (ejecuciones en seco)

Para ver si la instalación de nuevas dependencias tiene éxito, puede usar el parámetro --ejecución en seco para equipos instalar Y actualizar. Composer en este caso mostrará todos los problemas potenciales sin ejecutar directamente el comando. No habrá cambios reales en el proyecto. Esta técnica es excelente para probar dependencias complejas y modificar cambios antes de confirmarlos.

Actualización del compositor --ejecución en seco --perfil --verbose

Crear un proyecto

Por último, pero no menos importante, debemos mencionar el comando crear-proyecto.

El comando de creación de proyecto toma como argumento el nombre de un paquete, que luego clona y ejecuta. instalación del compositor dentro de eso. Esto es excelente para inicializar proyectos: ya no necesita buscar la URL del paquete deseado en GitHub, clonarlo, ir a la carpeta usted mismo y ejecutar el comando. instalar.

Grandes proyectos como Symfony y Laravel ya están utilizando este enfoque para inicializar sus aplicaciones "esqueleto", y muchos más se están uniendo.

Por ejemplo, en Laravel se usa así:

Compositor crear-proyecto laravel/laravel --prefer-dist --profile --verbose
al equipo crear-proyecto Puede pasar dos parámetros más: camino en el que instalar el proyecto (si no se especifica, se utiliza el nombre del paquete), y versión(Se utilizará el último si no se especifica).

Conclusión

Espero que esta lista de consejos y trucos te haya resultado útil. Si nos perdimos algo, cuéntanoslo y actualizaremos el artículo. Y recuerda, si olvidaste algún comando u opción, solo echa un vistazo a la hoja de trucos. ¡Feliz composición!

Del autor: Muy a menudo, al desarrollar aplicaciones web, especialmente proyectos web grandes, es necesario utilizar varias bibliotecas de terceros. Por ejemplo, puede ser un marco php, un motor de plantillas, un motor de foro o todos estos componentes juntos. En esta lección, consideraremos el administrador de dependencias de Composer, con el que podrás descargar e instalar fácilmente las bibliotecas necesarias.

Si utilizamos varias bibliotecas de terceros, todas ellas deben estar instaladas correctamente y conectadas al script que se está desarrollando. En el mejor de los casos, cada biblioteca debe incluir un archivo principal y, si utilizamos tres bibliotecas de terceros, entonces se deben incluir tres archivos.

Pero, ¿qué pasa si una de las bibliotecas depende para su funcionalidad de bibliotecas adicionales? En este caso, también es necesario descargarlas y conectarlas. Es decir, cuando se utilizan varias bibliotecas, existen algunos inconvenientes asociados con su instalación.

Por lo tanto, en esta lección consideraremos el administrador de dependencias de Composer, con el que podrás descargar e instalar fácilmente las bibliotecas necesarias.

Instalar compositor

Composer es un administrador de dependencias para el intérprete del lenguaje PHP, en pocas palabras, es un script escrito en PHP que descarga las bibliotecas que necesitas y genera automáticamente un único archivo especial, al incluirlo incluirás todas las bibliotecas descargadas. Al mismo tiempo, si las bibliotecas que necesita dependen de algunas bibliotecas adicionales, también se descargarán automáticamente. La descarga de bibliotecas se realiza desde el repositorio oficial de paquetes packagist.org.

Como dije anteriormente, Composer es un administrador de dependencias para el intérprete del lenguaje PHP, lo que significa que esta herramienta se instala directamente en el intérprete de este lenguaje. Al mismo tiempo, ahora estamos hablando del intérprete que se instala en la computadora de su hogar, porque muchas veces en el servidor (en un hosting real en Internet) no tenemos acceso al intérprete de lenguaje PHP. Sí, y esto no es necesario en absoluto, ya que básicamente los scripts se desarrollan en una computadora de casa y se transfieren al hosting al final del trabajo. Por supuesto, el intérprete de lenguaje PHP se puede instalar de manera diferente para cada uno, por ejemplo, alguien usa el software Denwer, alguien usa OpenServer, alguien tiene una instalación separada de PHP, Apache, Mysql, pero esto no importa en absoluto desde el proceso de instalación. del administrador de dependencias de Composer es similar en todos los casos.

Antes de instalar, echemos un vistazo al sitio web oficial del administrador de dependencias de Composer: https://getcomposer.org/:

Aquí en la página de Documentación hay una descripción detallada de cómo instalar y trabajar con este administrador (aunque en inglés).

Composer se puede instalar en el sistema operativo Windows de dos formas:

manualmente usando la línea de comando;

automáticamente, utilizando un archivo especial, cuyo enlace encontrará en la página de documentación, en la sección de instalación para el sistema operativo Windows.

En esta lección, consideraremos la forma manual de instalar la herramienta Composer. Me gustaría señalar de inmediato que Composer es un archivo compositor.phar, que generalmente se encuentra en la carpeta con el intérprete de lenguaje PHP. Por lo tanto, antes de la instalación, es recomendable explorar esta carpeta, porque, por ejemplo, en el software OpenServer (en los módulos PHP), Composer ya está instalado.

Entonces, después de iniciar el servidor web, abra la línea de comando (le recuerdo que para Windows 7 la línea de comando se puede abrir si ingresa cmd en la búsqueda del menú Inicio) y vaya a la carpeta donde está instalado el intérprete de lenguaje PHP. Para hacer esto, use el comando cd: ruta de la carpeta del cd

Ahora, según la documentación, necesitas ejecutar el siguiente comando: php -r "readfile('https://getcomposer.org/installer');" | PHP

El cual ejecutará el archivo de lectura del código PHP('https://getcomposer.org/installer'), es decir, leeremos el archivo remoto. Aquí me gustaría señalar que en su intérprete, el lenguaje PHP, la extensión php_openssl.dll debe estar conectada, de lo contrario el comando no se ejecutará.

Después de ejecutar el comando, vemos un mensaje que indica que la instalación se completó correctamente. Puedes verificar si Composer realmente se instaló usando el comando que mostrará su versión: php compositor.phar -v

Ahora, para facilitar el trabajo con él, ejecutemos un comando más: echo @php "%~dp0composer.phar" %*>composer.bat

Este comando creará un archivo compositor.bat especial en la carpeta del intérprete de lenguaje PHP, con el que podrás acceder al administrador de dependencias usando solo el nombre del compositor, y al mismo tiempo, estando en cualquier carpeta desde la línea de comando. Pero al mismo tiempo, en la variable del sistema ruta, debe especificar la ruta a la carpeta en la que está instalado el intérprete de lenguaje PHP:

Instalación de las bibliotecas necesarias

Para empezar, acordemos que nuestro script requerirá las siguientes bibliotecas:

Ahora, es necesario describir en un archivo especial compositor.json (creamos este archivo en la carpeta con el script desarrollado) que las bibliotecas anteriores son necesarias para que el futuro script funcione:

( "require": ( "slim/slim":"2.*", "twig/twig":"~1.0", "phpbb/phpbb": "3.1.3-RC2" ) )

"requerido" :(

"delgado/delgado": "2.*",

"ramita/ramita": "~1.0",

"phpbb/phpbb": "3.1.3-RC2"

Como puede ver, este archivo debe contener un objeto en forma de cadena json. Que, en la propiedad require, describe aquellas bibliotecas de las que depende el futuro script. Además, require es, a su vez, también un objeto cuyas propiedades son aquellas bibliotecas que deben descargarse. Donde nombre de propiedad es el nombre de la biblioteca y valor es la versión de la biblioteca que se está descargando. Además, el nombre consta de dos subcadenas separadas por /. La línea antes del delimitador es el nombre del proveedor, la línea después es el nombre de la biblioteca.

Los nombres y versiones de las bibliotecas que se deben especificar en el archivo compositor.json se encuentran en los sitios web oficiales, en la sección de instalación. Por ejemplo, para el motor de plantillas Twig, en la documentación, en la sección Instalación, hay una línea que ingresé en el archivo compositor.json:

Después de compilar el archivo compositor.json, abra la línea de comando, vaya a la carpeta donde se está desarrollando el script y ejecute el comando: instalación del compositor

E inmediatamente comienza la instalación de las bibliotecas necesarias.

Después de la instalación, en la carpeta del script desarrollado, encontraremos la carpeta del proveedor, en la que se descargaron todas las bibliotecas necesarias y sus dependencias, y se generó el archivo autoload.php, al conectarlo conectará todas las bibliotecas descargadas. Después de eso, podrá trabajar con las bibliotecas instaladas.

Esto completa esta lección. ¡Todo lo mejor para ti y feliz codificación!

¿Qué es y por qué lo necesito?

Si tiene esta pregunta, no lea más artículos y primero Pregúntele a Google "¿Qué es la inyección de dependencia?" y por qué necesitas administrador de dependencia(En particular ).

Personalmente ya no tengo aplicaciones sin compositor. Especialmente cuando se desarrolla para un marco. Estos son solo los beneficios fundamentales de usar un administrador de dependencias en proyectos:

  • Instalación y actualización convenientes de paquetes y bibliotecas de terceros
  • Despliegue correcto
  • El código extraño de paquetes de terceros no se guarda en su propio repositorio y no ensucia código ni estadísticas.
  • Versiones de dependencia flexibles

Instalación

Aquí todo es lo más simple posible, pero primero debes decidir el método de uso: ¿un compositor para todo el localhost o cada proyecto tiene su propio compositor? (por supuesto que puedes combinar)

La primera opción es conveniente para los desarrolladores que trabajan en muchas aplicaciones al mismo tiempo y mantienen todo limpio y fresco. La segunda opción se utiliza cuando se requiere que la aplicación tenga una versión exacta y uniforme de Composer para todos los desarrolladores, y luego se envía al repositorio.

Mantener Composer junto con la aplicación

Comandos del compositor

instalar

Configurando y recogiendo tu compositor.json puede comenzar a instalar los mismos paquetes que especificamos en nuestro archivo json en los bloques "require" y "require-dev". Para esto usamos el comando instalar.

Instalación del compositor ./composer.phar instalación php instalación del compositor.phar

* El primer comando (línea 1) para aquellos que eligieron el método de instalación de un solo para todo el sistema operativo. El segundo y el tercero son necesarios para todos los demás y solo se diferencian en si le ha otorgado derecho a ejecutar el archivo phar o no.

La primera vez que ejecuta el comando instalar Obtendremos la versión más reciente o exacta de todos los paquetes que especificamos en el archivo json (dependiendo de cómo especificamos la versión para cada paquete individual). Volver a ejecutar el comando instalar no conducirá a nada - ¡y éste es un punto importante!

Durante la ejecución instalar descargar todas las bibliotecas a una carpeta proveedor nuestro proyecto (a continuación describiré cómo cambiar esta ruta), y al lado de json-file creará un nuevo archivo compositor.lock(Esta es una instantánea: una instantánea de los paquetes instalados con sus versiones exactas). carpeta proveedor debe ser colocado inmediatamente en .gitignore, para no mezclar todo accidentalmente con su código. Y aquí cerrar-file, por el contrario, debe confirmarse y enviarse al repositorio. Si eliminas la carpeta proveedor o algunos paquetes del mismo y luego llamar al comando nuevamente instalar, todos los paquetes se restaurarán exactamente con las mismas versiones que se instalaron en la primera llamada instalar. Esto sucede porque comprueba la disponibilidad cerrar-file y, si está presente, ignora las versiones del paquete especificadas en el archivo json (¡solo si no se han desinflado!) e instala las versiones especificadas en cerrar-archivo.

Así, pasando un solo cerrar-file entre todos los desarrolladores, se garantizará que el equipo tendrá las mismas versiones de paquete (creo que no vale la pena explicar por qué).

actualizar

Si es necesario, actualice las versiones del paquete a las más recientes; llamamos al comando actualizar.

Actualización del compositor ./composer.phar actualización php compositor.phar actualización

Después de eso, todos los paquetes se actualizarán. También se actualizará cerrar-archivo.

Aquí vale la pena recordar que los paquetes se actualizarán de acuerdo con el formato de versión especificado para cada uno de ellos por separado en json-archivo. La sintaxis para especificar versiones de paquetes está bien descrita en la documentación oficial.

autoactualización

Otro comando útil que se actualizará solo. .

Autoactualización de Composer ./composer.phar autoactualización php compositor.phar autoactualización

espectáculo

./composer.phar show -s -t ./composer.phar show -i -t

Este comando muestra una lista de paquetes instalados.

Primer ejemplo (con clave -s) mostrará el árbol de paquetes que indicamos manualmente en json-archivo.

El segundo ejemplo (con la clave -i) enumerará absolutamente todos los paquetes instalados, incluyendo de forma recursiva las dependencias de todos nuestros paquetes originales.

Llave -t cambia la visualización de la respuesta al estilo del árbol de dependencia.

ruta del proveedor o cómo cambiar la ruta de instalación de la biblioteca

Para cambiar la ruta de instalación del paquete, debe usar la directiva dir-proveedor V json-archivo. Aquí hay un ejemplo:

( "nombre": "Mi proyecto", "descripción": "Descripción del proyecto", "página de inicio": "http://my-project.com/", "config": ( "vendor-dir": "/vendor /custom/path" ), "require": ( "php": ">=5.3.3", "zendframework/zendframework": "2.*" ), "require-dev": ( "zendframework/zftool": "v0.1.0", "zendframework/zend-developer-tools": "dev-master" ) )

Conclusión

Intenté describir todas las cosas básicas que puedes necesitar para familiarizarte con Composer. Las características más profundas se estudian mejor en la documentación. Por ejemplo: cómo habilitar la descarga de su propia biblioteca desde github.

Y para buscar cómodamente los paquetes necesarios, le aconsejo que utilice el proyecto packagist.org

Si tienes alguna pregunta, no dudes en escribir en los comentarios.