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 .

Enkele suggesties

  1. Schakel xdebug uit bij het uitvoeren van Composer.
  2. 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\Squaresrc/Shapes/Square.php .
  • MyVendorName\MyProject\Tests\Shapes\Squaretests/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 bestand composer.lock gemaakt door de composer update van de composer 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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow