PHP
Kompositör Beroende Manager
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
- Packagist - Bläddra bland tillgängliga paket (som du kan installera med Composer).
- Officiell dokumentation
- Officiell guide för att komma igång
Få förslag
- Inaktivera xdebug när du kör Composer.
- 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\Square
➔src/Shapes/Square.php
. -
MyVendorName\MyProject\Tests\Shapes\Square
➔tests/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 filencomposer.lock
skapats avcomposer 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