PHP
Componist Dependency Manager
Zoeken…
Invoering
Composer is PHP's meest gebruikte afhankelijkheidsmanager. Het is analoog aan npm
in Node, pip
voor Python of NuGet
voor .NET.
Syntaxis
- php path / to / composer.phar [commando] [opties] [argumenten]
parameters
Parameter | Details |
---|---|
licentie | Definieert het type licentie dat u in het project wilt gebruiken. |
auteurs | Definieert de auteurs van het project, evenals de auteursdetails. |
ondersteuning | Definieert de ondersteunings-e-mails, irc-kanaal en verschillende links. |
vereisen | Definieert de werkelijke afhankelijkheden en de pakketversies. |
vereisen-dev | Definieert de pakketten die nodig zijn voor het ontwikkelen van het project. |
stel voor | Definieert de pakketvoorstellen, dwz pakketten die kunnen helpen als ze zijn geïnstalleerd. |
autoload | Definieert het autoloading-beleid van het project. |
autoload-dev | Definieert het autoloadingbeleid voor de ontwikkeling van het project. |
Opmerkingen
Automatisch laden werkt alleen voor bibliotheken die informatie over automatisch laden opgeven. De meeste bibliotheken voldoen aan een standaard zoals PSR-0 of PSR-4 .
Handige Links
- Packagist - Blader door beschikbare pakketten (die u met Composer kunt installeren).
- Officiële documentatie
- Officiële gids Aan de slag
Enkele suggesties
- Schakel xdebug uit bij het uitvoeren van Composer.
- Voer Composer niet uit als
root
. Pakketten zijn niet te vertrouwen.
Wat is componist?
Composer is een afhankelijkheids- / pakketbeheerder voor PHP. Het kan worden gebruikt om uw projectafhankelijkheden te installeren, bij te houden en bij te werken. Composer zorgt ook voor het automatisch laden van de afhankelijkheden waarop uw toepassing vertrouwt, zodat u de afhankelijkheid in uw project gemakkelijk kunt gebruiken zonder dat u zich zorgen hoeft te maken om deze bovenaan een bepaald bestand te plaatsen.
Afhankelijkheden voor uw project worden vermeld in een composer.json
bestand dat zich meestal in de hoofdmap van uw project bevindt. Dit bestand bevat informatie over de vereiste versies van pakketten voor productie en ontwikkeling.
Een volledig overzicht van het composer.json
schema is te vinden op de Composer-website .
Dit bestand kan handmatig worden bewerkt met behulp van elke teksteditor of automatisch via de opdrachtregel via opdrachten zoals composer require <package>
of composer require-dev <package>
.
Als u composer in uw project wilt gebruiken, moet u het bestand composer.json
. Je kunt het handmatig maken of gewoon composer init
. Nadat u composer init
in uw terminal hebt uitgevoerd, wordt u om basisinformatie over uw project gevraagd: pakketnaam ( leverancier / pakket - bijv. laravel/laravel
), beschrijving - optioneel , auteur en andere informatie zoals minimumstabiliteit, licentie en vereist Pakketjes.
De require
sleutel in uw composer.json
bestand geeft Composer aan van welke pakketten uw project afhankelijk is. require
neemt een object dat pakketnamen (bijv. monolog / monolog ) toewijst aan versiebeperkingen (bijv. 1.0. *).
{
"require": {
"composer/composer": "1.2.*"
}
}
Om de gedefinieerde afhankelijkheden te installeren, moet u de opdracht voor het composer install
de composer install
uitvoeren en deze zal dan de gedefinieerde pakketten vinden die overeenkomen met de opgegeven version
en deze downloaden naar de vendor
. Het is een conventie om code van derden in een map met de naam vendor
.
U zult zien dat het install
ook een composer.lock
bestand heeft gemaakt.
Een composer.lock
bestand wordt automatisch gegenereerd door Composer. Dit bestand wordt gebruikt om de momenteel geïnstalleerde versies en de status van uw afhankelijkheden bij te houden. Als u composer install
installeert, worden pakketten exact in de staat opgeslagen die in het vergrendelingsbestand is opgeslagen.
Autoloading met Composer
Hoewel componist een systeem biedt voor het beheren van afhankelijkheden voor PHP-projecten (bijvoorbeeld van Packagist ), kan het ook met name dienen als een autoloader, waarmee wordt aangegeven waar naar specifieke naamruimten moet worden gezocht of generieke functiebestanden kunnen worden opgenomen.
Het begint met het bestand composer.json
:
{
// ...
"autoload": {
"psr-4": {
"MyVendorName\\MyProject": "src/"
},
"files": [
"src/functions.php"
]
},
"autoload-dev": {
"psr-4": {
"MyVendorName\\MyProject\\Tests": "tests/"
}
}
}
Deze configuratiecode zorgt ervoor dat alle klassen in de naamruimte MyVendorName\MyProject
worden toegewezen aan de src
directory en alle klassen in MyVendorName\MyProject\Tests
aan de tests
directory (relatief ten opzichte van uw root-directory). Het bevat ook automatisch het bestand functions.php
.
Nadat u dit in uw bestand composer.json
, voert u de composer update
in een terminal om de afhankelijkheden en het vergrendelingsbestand door de componist te laten bijwerken en het bestand autoload.php
genereren. Wanneer u implementeert in een productieomgeving, gebruikt u de composer install --no-dev
. Het autoload.php
bestand is te vinden in de vendor
die moet worden gegenereerd in de map waarin composer.json
zich bevindt.
Je moet require
dit bestand vroeg om een setup punt in de levenscyclus van uw toepassing met behulp van een regel die lijkt op die hieronder.
require_once __DIR__ . '/vendor/autoload.php';
Eenmaal opgenomen, zorgt het autoload.php
bestand voor het laden van alle afhankelijkheden die u in uw composer.json
bestand hebt opgegeven.
Enkele voorbeelden van het klassenpad naar mappen toewijzen:
-
MyVendorName\MyProject\Shapes\Square
➔src/Shapes/Square.php
. -
MyVendorName\MyProject\Tests\Shapes\Square
➔tests/Shapes/Square.php
.
Voordelen van het gebruik van Composer
Composer houdt bij welke versies van pakketten u hebt geïnstalleerd in een bestand met de naam composer.lock
, dat bedoeld is om te worden gebruikt voor versiebeheer, zodat wanneer het project in de toekomst wordt gekloond, eenvoudigweg de composer install
Composer wordt uitgevoerd en alle afhankelijkheden van het project worden gedownload en geïnstalleerd .
Componist behandelt PHP-afhankelijkheden per project. Dit maakt het gemakkelijk om meerdere projecten op één machine te hebben die afhankelijk zijn van verschillende versies van één PHP-pakket.
Componist volgt welke afhankelijkheden alleen bedoeld zijn voor dev-omgevingen
composer require --dev phpunit/phpunit
Composer biedt een autoloader, waardoor het uiterst eenvoudig is om met elk pakket te beginnen. Bijvoorbeeld, na het installeren van Goutte met composer require fabpot/goutte
, kunt u Goutte onmiddellijk in een nieuw project gaan gebruiken:
<?php
require __DIR__ . '/vendor/autoload.php';
$client = new Goutte\Client();
// Start using Goutte
Met Composer kunt u een project eenvoudig bijwerken naar de nieuwste versie die is toegestaan door uw componist.json. EG. composer update fabpot/goutte
, of om alle afhankelijkheden van uw project bij te werken: composer update
.
Verschil tussen 'installer install' en 'composer update'
composer update
composer update
zal onze afhankelijkheden bijwerken zoals deze zijn opgegeven in composer.json
.
Als ons project bijvoorbeeld deze configuratie gebruikt:
"require": {
"laravelcollective/html": "2.0.*"
}
Stel dat we de 2.0.1
versie van het pakket hebben geïnstalleerd, dan zal het uitvoeren van de composer update
van de composer update
een upgrade van dit pakket veroorzaken (bijvoorbeeld naar 2.0.2
, als het al is uitgebracht).
In detail zal composer update
:
- Lees
composer.json
- Verwijder geïnstalleerde pakketten die niet meer nodig zijn in
composer.json
- Controleer de beschikbaarheid van de nieuwste versies van onze vereiste pakketten
- Installeer de nieuwste versies van onze pakketten
- Werk
composer.lock
bij om de versie van de geïnstalleerde pakketten op te slaan
composer install
composer install
installeert alle afhankelijkheden zoals gespecificeerd in het composer.lock
bestand in de opgegeven versie (vergrendeld), zonder iets bij te werken.
In detail:
- Lees het bestand
composer.lock
- Installeer de pakketten die zijn opgegeven in het bestand
composer.lock
Wanneer installeren en wanneer bijwerken?
composer update
wordt meestal in de 'ontwikkelingsfase' gebruikt om onze projectpakketten te upgraden.composer install
wordt voornamelijk gebruikt in de 'implementatiefase' om onze applicatie op een productieserver of op een testomgeving te installeren, met dezelfde afhankelijkheden die zijn opgeslagen in het bestandcomposer.lock
gemaakt door decomposer update
van decomposer update
.
Componist Beschikbare opdrachten
Commando | Gebruik |
---|---|
over | Korte informatie over Composer |
archief | Maak een archief van dit componistenpakket |
Bladeren | Opent de repository-URL of startpagina van het pakket in uw browser. |
Cache wissen | Wist de interne pakketcache van de componist. |
Cache wissen | Wist de interne pakketcache van de componist. |
config | Stel configuratie-opties in |
create-project | Maak een nieuw project van een pakket in een bepaalde map. |
hangt er van af | Toont welke pakketten ervoor zorgen dat het gegeven pakket wordt geïnstalleerd |
diagnostiseren | Diagnoseert het systeem om veelvoorkomende fouten te identificeren. |
dump-autoload | Dumpt de autoloader |
dumpautoload | Dumpt de autoloader |
exec | Voer een vendored binary / script uit |
globaal | Hiermee kunnen opdrachten worden uitgevoerd in de globale componist dir ($ COMPOSER_HOME). |
helpen | Geeft hulp weer voor een opdracht |
huis | Opent de repository-URL of startpagina van het pakket in uw browser. |
info | Informatie weergeven over pakketten |
in het | Maakt een eenvoudig bestand componer.json in de huidige map. |
installeren | Installeert de projectafhankelijkheden van het bestand composer.lock indien aanwezig, of valt terug op composer.json. |
licenties | Informatie weergeven over licenties van afhankelijkheden |
lijst | Geeft opdrachten weer |
verouderd | Toont een lijst met geïnstalleerde pakketten waarvoor updates beschikbaar zijn, inclusief hun nieuwste versie. |
verbiedt | Toont welke pakketten voorkomen dat het gegeven pakket wordt geïnstalleerd |
verwijderen | Hiermee verwijdert u een pakket uit de vereiste of vereiste-dev |
vereisen | Voegt vereiste pakketten toe aan uw componist.json en installeert ze |
run-script | Voer de scripts uit die zijn gedefinieerd in composer.json. |
zoeken | Zoeken naar pakketten |
automatisch worden bijgewerkt | Werkt composer.phar bij naar de nieuwste versie. |
SelfUpdate | Werkt composer.phar bij naar de nieuwste versie. |
tonen | Informatie weergeven over pakketten |
toestand | Een lijst met lokaal aangepaste pakketten weergeven |
suggereert | Toon pakket suggesties |
bijwerken | Werkt uw afhankelijkheden bij naar de nieuwste versie volgens composer.json en werkt het bestand composer.lock bij. |
validate | Valideert een composer.json en composer.lock |
waarom | Toont welke pakketten ervoor zorgen dat het gegeven pakket wordt geïnstalleerd |
waarom niet | Toont welke pakketten voorkomen dat het gegeven pakket wordt geïnstalleerd |
Installatie
U kunt Composer lokaal, als onderdeel van uw project of wereldwijd als een uitvoerbaar systeem installeren.
plaatselijk
Voer deze opdrachten uit in uw terminal om te installeren.
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');"
Hiermee wordt composer.phar
(een PHP Archive-bestand) naar de huidige map gedownload. Nu kunt u php composer.phar
om Composer te gebruiken, bijv
php composer.phar install
wereldwijd
Om Composer wereldwijd te gebruiken, plaatst u het bestand composer.phar in een map die deel uitmaakt van uw PATH
mv composer.phar /usr/local/bin/composer
Nu kunt u overal composer
gebruiken in plaats van php composer.phar
, bijv
composer install