Sök…


Introduktion

Kompositör är PHP: s mest använda beroendehanterare. Det är analogt med npm i Node, pip för Python eller NuGet för .NET.

Syntax

  • php path / to / composer.phar [kommando] [alternativ] [argument]

parametrar

Parameter detaljer
licens Definierar vilken typ av licens du vill använda i projektet.
författarna Definierar författarna till projektet såväl som författarinformationen.
Stöd Definierar supportmails, irc-kanal och olika länkar.
fordra Definierar de faktiska beroenden såväl som paketversionerna.
kräva-dev Definierar de paket som är nödvändiga för att utveckla projektet.
föreslå Definierar paketförslag, dvs. paket som kan hjälpa om de är installerade.
autoload Definierar autoladningspolicyn för projektet.
autoload-dev Definierar autoladningspolicyn för att utveckla projektet.

Anmärkningar

Autoloadning fungerar bara för bibliotek som anger autoloadinformation. De flesta bibliotek håller och följer en standard som PSR-0 eller PSR-4 .

Användbara länkar

Få förslag

  1. Inaktivera xdebug när du kör Composer.
  2. Kör inte Composer som root . Paket är inte att lita på.

Vad är kompositör?

Kompositör är ett beroende / pakethanterare för PHP. Det kan användas för att installera, hålla reda på och uppdatera dina projektberoende. Kompositören tar också hand om att ladda automatiskt de beroenden som din applikation förlitar sig på, så att du enkelt kan använda beroendet i ditt projekt utan att oroa dig för att inkludera dem högst upp i en given fil.

Beroenden för ditt projekt listas i en composer.json fil som vanligtvis finns i ditt projektrot. Den här filen innehåller information om nödvändiga versioner av paket för produktion och utveckling.

En fullständig beskrivning av composer.json schema finns på kompositörens webbplats .

Denna fil kan redigeras manuellt med valfri textredigerare eller automatiskt via kommandoraden via kommandon som composer require <package> eller composer require-dev <package> .

För att börja använda kompositör i projektet, måste du skapa composer.json filen. Du kan antingen skapa det manuellt eller helt enkelt köra composer init . När du har kört composer init i din terminal kommer den att be dig om lite grundläggande information om ditt projekt: Paketnamn ( leverantör / paket - t.ex. laravel/laravel ), beskrivning - valfritt , författare och lite annan information som minimistabilitet, licens och obligatorisk paket.

require i din composer.json fil anger kompositör vilka paket ditt projekt beror på. require tar ett objekt som kartlägger paketnamn (t.ex. monolog / monolog ) till versionbegränsningar (t.ex. 1.0. *).

{
    "require": {
        "composer/composer": "1.2.*"
    }
}

För att installera de definierade beroenden måste du köra composer install och den hittar sedan de definierade paketen som matchar den medföljande version begränsning och laddar ner den till vendor . Det är en konvention att sätta tredje parts kod i en katalog med namnet vendor .

Du kommer att märka att install skapade också en composer.lock fil.

En composer.lock fil genereras automatiskt av Composer. Denna fil används för att spåra de för närvarande installerade versionerna och tillståndet för dina beroenden. Kör composer install kommer att installera paket till exakt det läge som lagras i låsfilen.

Autoladning med kompositör

Medan kompositören tillhandahåller ett system för att hantera beroenden för PHP-projekt (t.ex. från Packagist ), kan det också särskilt fungera som en autoloader, ange var man ska leta efter specifika namnutrymmen eller inkludera generiska funktionsfiler.

Det börjar med composer.json fil:

{
    // ...
    "autoload": {
        "psr-4": {
            "MyVendorName\\MyProject": "src/"
        },
        "files": [
            "src/functions.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "MyVendorName\\MyProject\\Tests": "tests/"
        }
    }
}

Den här konfigurationskoden säkerställer att alla klasser i namnutrymmet MyVendorName\MyProject mappas till src katalogen och alla klasser i MyVendorName\MyProject\Tests till tests (relativt din rotkatalog). Det kommer också automatiskt att inkludera filen functions.php .

När du har lagt detta i din composer.json fil, kör composer update i en terminal för att kompositören ska uppdatera beroenden, låsfilen och generera autoload.php filen. När du distribuerar till en produktionsmiljö skulle du använda composer install --no-dev . autoload.php filen kan hittas i vendor som ska genereras i katalogen där composer.json finns.

Du bör require denna fil tidigt vid en installationspunkt i livscykeln för din applikation med en rad som liknar den nedan.

require_once __DIR__ . '/vendor/autoload.php';

När den ingår inkluderar autoload.php filen att ladda alla beroenden som du angav i din composer.json fil.

Några exempel på klassvägen till mappmappning:

  • MyVendorName\MyProject\Shapes\Squaresrc/Shapes/Square.php .
  • MyVendorName\MyProject\Tests\Shapes\Squaretests/Shapes/Square.php .

Fördelarna med att använda kompositör

Kompositör spårar vilka versioner av paket du har installerat i en fil som heter composer.lock , som är avsedd att vara åtagad att versionskontrollera, så att när projektet klonas i framtiden, helt enkelt kör composer install kommer att ladda ner och installera alla projektets beroenden .

Kompositör hanterar PHP-beroenden per projektbasis. Detta gör det enkelt att ha flera projekt på en maskin som är beroende av separata versioner av ett PHP-paket.

Kompositörspår som beroenden endast är avsedda för dev-miljöer

composer require --dev phpunit/phpunit

Kompositören erbjuder en autoloader, vilket gör det extremt enkelt att komma igång med alla paket. Till exempel, efter installation av Goutte med composer require fabpot/goutte , kan du omedelbart börja använda Goutte i ett nytt projekt:

<?php

require __DIR__ . '/vendor/autoload.php';

$client = new Goutte\Client();

// Start using Goutte

Kompositör låter dig enkelt uppdatera ett projekt till den senaste versionen som tillåts av din kompositör.json. T.EX. composer update fabpot/goutte , eller för att uppdatera vart och ett av projektets beroenden: composer update .

Skillnaden mellan "kompositinstallation" och "komposituppdatering"

composer update

composer update kommer att uppdatera våra beroenden som de anges i composer.json .

Till exempel om vårt projekt använder denna konfiguration:

"require": {
    "laravelcollective/html": "2.0.*"
}

Antar att vi faktiskt har installerat 2.0.1 versionen av paketet, att köra composer update orsakar en uppgradering av detta paket (till exempel till 2.0.2 , om det redan har släppts).

I detalj kommer composer update :

  • Läs composer.json
  • Ta bort installerade paket som inte krävs mer i composer.json
  • Kontrollera tillgängligheten för de senaste versionerna av våra obligatoriska paket
  • Installera de senaste versionerna av våra paket
  • Uppdatera composer.lock att lagra den installerade paketversionen

composer install

composer install kommer att installera alla beroenden som anges i filen composer.lock i den angivna versionen (låst), utan att uppdatera någonting.

I detalj:

  • Läs composer.lock filen
  • Installera paketen som anges i composer.lock filen

När installeras och när uppdateras

  • composer update används mest i utvecklingsfasen för att uppgradera våra projektpaket.

  • composer install används främst i "distributionsfasen" för att installera vår applikation på en produktionsserver eller i en testmiljö, med samma beroenden som lagras i filen composer.lock skapats av composer update .

Komponenter tillgängliga kommandon

Kommando Användande
handla om Kort information om kompositör
arkiv Skapa ett arkiv för detta kompositpaket
bläddra Öppnar paketets databas-URL eller hemsida i din webbläsare.
klar-cache Rensar kompositörens interna paketcache.
clearcache Rensar kompositörens interna paketcache.
config Ställ in konfigurationsalternativ
create-projekt Skapa nytt projekt från ett paket i en given katalog.
beror Visar vilka paket som gör att det givna paketet installeras
diagnostisera Diagnoserar systemet för att identifiera vanliga fel.
dumpsautoload Dumper autoloader
dumpautoload Dumper autoloader
exec Kör en levererad binär / skript
global Tillåter att kommandon körs i den globala kompositören dir ($ COMPOSER_HOME).
hjälp Visar hjälp för ett kommando
Hem Öppnar paketets databas-URL eller hemsida i din webbläsare.
info Visa information om paket
i det Skapar en grundläggande composer.json-fil i aktuell katalog.
Installera Installerar projektberoende från filen composer.lock om den finns, eller faller tillbaka på composer.json.
licenser Visa information om licenser för beroende
lista Listar kommandon
föråldrad Visar en lista över installerade paket som har uppdateringar tillgängliga, inklusive deras senaste version.
förbjuder Visar vilka paket som förhindrar att det givna paketet installeras
ta bort Tar bort ett paket från kravet eller kräver-dev
fordra Lägger till nödvändiga paket till din kompositör.json och installerar dem
run-script Kör skript som definierats i composer.json.
Sök Sök efter paket
själv uppdatering Uppdaterar composer.phar till den senaste versionen.
Selfupdate Uppdaterar composer.phar till den senaste versionen.
visa Visa information om paket
status Visa en lista med lokalt modifierade paket
föreslår Visa paketförslag
uppdatering Uppdaterar dina beroenden till den senaste versionen enligt composer.json och uppdaterar filen composer.lock.
bekräfta Validerar en kompositör.json och kompositör.lock
Varför Visar vilka paket som gör att det givna paketet installeras
varför inte Visar vilka paket som förhindrar att det givna paketet installeras

Installation

Du kan installera Composer lokalt, som en del av ditt projekt eller globalt som ett systembrett körbart.

lokalt

För att installera, kör dessa kommandon i din terminal.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# to check the validity of the downloaded installer, check here against the SHA-384:
# https://composer.github.io/pubkeys.html
php composer-setup.php
php -r "unlink('composer-setup.php');"

Detta kommer att ladda ner composer.phar (en PHP Archive-fil) till den aktuella katalogen. Nu kan du köra php composer.phar att använda Composer, t.ex.

php composer.phar install

globalt

Om du vill använda Composer globalt placerar du composer.phar-filen i en katalog som är en del av din PATH

mv composer.phar /usr/local/bin/composer

Nu kan du använda composer helst istället för php composer.phar , t.ex.

composer install


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow