PHP
Composer Dependency Manager
Szukaj…
Wprowadzenie
Kompozytor jest najczęściej używanym menedżerem zależności PHP. Jest analogiczny do npm
w Node, pip
dla Pythona lub NuGet
dla .NET.
Składnia
- ścieżka php / to / composer.phar [polecenie] [opcje] [argumenty]
Parametry
Parametr | Detale |
---|---|
licencja | Określa typ licencji, której chcesz użyć w Projekcie. |
autorski | Definiuje autorów projektu, a także dane autora. |
wsparcie | Określa e-maile pomocy technicznej, kanał IRC i różne linki. |
wymagać | Definiuje rzeczywiste zależności, a także wersje pakietów. |
wymagany-dev | Definiuje pakiety niezbędne do opracowania projektu. |
sugerować | Definiuje sugestie pakietów, tj. Pakiety, które mogą pomóc, jeśli zostaną zainstalowane. |
autoload | Definiuje zasady automatycznego ładowania projektu. |
autoload-dev | Definiuje zasady automatycznego wczytywania do opracowania projektu. |
Uwagi
Automatyczne ładowanie działa tylko w przypadku bibliotek, które określają informacje o automatycznym ładowaniu. Większość bibliotek spełnia i będzie przestrzegać standardu, takiego jak PSR-0 lub PSR-4 .
Przydatne linki
- Packagist - Przeglądaj dostępne pakiety (które możesz zainstalować za pomocą Composer).
- Oficjalna dokumentacja
- Oficjalny przewodnik dla początkujących
Kilka sugestii
- Wyłącz xdebug podczas uruchamiania Composer.
- Nie uruchamiaj Composer jako
root
. Pakietom nie można ufać.
Co to jest kompozytor?
Kompozytor jest menedżerem zależności / pakietów dla PHP. Można go używać do instalowania, śledzenia i aktualizowania zależności projektu. Kompozytor dba również o automatyczne ładowanie zależności, na których opiera się Twoja aplikacja, umożliwiając łatwe korzystanie z zależności w projekcie bez obawy o umieszczenie ich na początku dowolnego pliku.
Zależności dla twojego projektu są wymienione w pliku composer.json
, który zazwyczaj znajduje się w katalogu głównym projektu. Ten plik zawiera informacje o wymaganych wersjach pakietów do produkcji i rozwoju.
Pełny zarys schematu composer.json
można znaleźć na stronie internetowej kompozytora .
Ten plik można edytować ręcznie za pomocą dowolnego edytora tekstu lub automatycznie za pomocą wiersza poleceń za pomocą poleceń takich jak composer require <package>
lub composer require-dev <package>
.
Aby rozpocząć korzystanie z kompozytora w swoim projekcie, musisz utworzyć plik composer.json
. Możesz go utworzyć ręcznie lub po prostu uruchomić composer init
. Po uruchomieniu composer init
w twoim terminalu poprosi Cię o kilka podstawowych informacji o twoim projekcie: Nazwa pakietu ( sprzedawca / pakiet - np. laravel/laravel
), Opis - opcjonalny , Autor i kilka innych informacji, takich jak Minimalna stabilność, Licencja i Wymagane Pakiety
require
klucz w pliku composer.json
określa Composer, od którego pakietów zależy twój projekt. require
zajmuje obiekt, który mapuje nazwy pakietów (np monolog / monolog) do ograniczeń wersja (np 1.0. *).
{
"require": {
"composer/composer": "1.2.*"
}
}
Aby zainstalować zdefiniowane zależności, należy uruchomić polecenie composer install
a następnie znajdzie zdefiniowane pakiety, które pasują do podanego ograniczenia version
i pobierze je do katalogu vendor
. Konwencja polega na umieszczaniu kodu strony trzeciej w katalogu o nazwie vendor
.
Zauważysz, że polecenie install
utworzyło również plik composer.lock
.
Plik composer.lock
jest generowany automatycznie przez Composer. Ten plik służy do śledzenia aktualnie zainstalowanych wersji i stanu zależności. Uruchomienie composer install
spowoduje zainstalowanie pakietów dokładnie do stanu zapisanego w pliku blokady.
Automatyczne ładowanie za pomocą Composer
Podczas gdy kompozytor zapewnia system do zarządzania zależnościami dla projektów PHP (np. Z Packagist ), może również służyć w szczególności jako autoloader, określając gdzie szukać określonych przestrzeni nazw lub dołączać ogólne pliki funkcji.
Zaczyna się od pliku composer.json
:
{
// ...
"autoload": {
"psr-4": {
"MyVendorName\\MyProject": "src/"
},
"files": [
"src/functions.php"
]
},
"autoload-dev": {
"psr-4": {
"MyVendorName\\MyProject\\Tests": "tests/"
}
}
}
Ten kod konfiguracyjny zapewnia, że wszystkie klasy w przestrzeni nazw MyVendorName\MyProject
są mapowane do katalogu src
a wszystkie klasy w MyVendorName\MyProject\Tests
do katalogu tests
(względem katalogu głównego). Będzie również automatycznie zawierać plik functions.php
.
Po umieszczeniu tego w pliku composer.json
uruchom composer update
w terminalu, aby kompozytor zaktualizował zależności, plik blokady i wygenerował plik autoload.php
. Wdrażając w środowisku produkcyjnym, composer install --no-dev
. Plik autoload.php
można znaleźć w katalogu vendor
który powinien zostać wygenerowany w katalogu, w którym znajduje się composer.json
.
Powinieneś require
tego pliku wcześnie w punkcie instalacji w cyklu życia aplikacji, używając linii podobnej do poniższej.
require_once __DIR__ . '/vendor/autoload.php';
Po włączeniu plik autoload.php
zajmuje się ładowaniem wszystkich zależności podanych w pliku composer.json
.
Kilka przykładów ścieżki klasy do mapowania katalogu:
-
MyVendorName\MyProject\Shapes\Square
➔src/Shapes/Square.php
. -
MyVendorName\MyProject\Tests\Shapes\Square
➔tests/Shapes/Square.php
.
Korzyści z używania Composer
Kompozytor śledzi, które wersje pakietów zainstalowałeś w pliku o nazwie composer.lock
, który ma być przeznaczony do kontroli wersji, tak więc kiedy projekt zostanie sklonowany w przyszłości, wystarczy uruchomić composer install
aby pobrać i zainstalować wszystkie zależności projektu .
Kompozytor zajmuje się zależnościami PHP dla poszczególnych projektów. Ułatwia to posiadanie kilku projektów na jednym komputerze, które zależą od osobnych wersji jednego pakietu PHP.
Kompozytor śledzi, które zależności są przeznaczone tylko dla środowisk programistycznych
composer require --dev phpunit/phpunit
Composer zapewnia autoloader, dzięki czemu bardzo łatwo jest rozpocząć pracę z dowolnym pakietem. Na przykład po zainstalowaniu Goutte z composer require fabpot/goutte
, możesz natychmiast zacząć używać Goutte w nowym projekcie:
<?php
require __DIR__ . '/vendor/autoload.php';
$client = new Goutte\Client();
// Start using Goutte
Kompozytor umożliwia łatwą aktualizację projektu do najnowszej wersji, która jest dozwolona w pliku composer.json. NA PRZYKŁAD. composer update fabpot/goutte
lub zaktualizuj każdą z zależności projektu: composer update
.
Różnica między „instalacją kompozytora” a „aktualizacją kompozytora”
composer update
composer update
nasze zależności, które są określone w composer.json
.
Na przykład, jeśli nasz projekt korzysta z tej konfiguracji:
"require": {
"laravelcollective/html": "2.0.*"
}
Załóżmy, że faktycznie zainstalowaliśmy wersję 2.0.1
pakietu, uruchomienie composer update
spowoduje aktualizację tego pakietu (na przykład do wersji 2.0.2
, jeśli została już wydana).
Szczegółowo composer update
:
- Przeczytaj
composer.json
- Usuń zainstalowane pakiety, które nie są już wymagane w
composer.json
- Sprawdź dostępność najnowszych wersji naszych wymaganych pakietów
- Zainstaluj najnowsze wersje naszych pakietów
- Zaktualizuj
composer.lock
aby zapisać wersję zainstalowanych pakietów
composer install
composer install
wszystkie zależności określone w pliku composer.lock
w określonej wersji (zablokowanej), bez aktualizacji czegokolwiek.
Szczegółowo:
- Przeczytaj plik
composer.lock
- Zainstaluj pakiety określone w pliku
composer.lock
Kiedy instalować i kiedy aktualizować
composer update
jest najczęściej używana w fazie „rozwoju”, aby zaktualizować nasze pakiety projektów.composer install
jest używana głównie w „fazie wdrażania”, aby zainstalować naszą aplikację na serwerze produkcyjnym lub w środowisku testowym, przy użyciu tych samych zależności zapisanych w plikucomposer.lock
utworzonym przezcomposer update
.
Kompozytor Dostępne polecenia
Komenda | Stosowanie |
---|---|
o | Krótka informacja o Kompozytorze |
archiwum | Utwórz archiwum tego pakietu kompozytora |
Przeglądaj | Otwiera adres URL repozytorium pakietu lub stronę główną w przeglądarce. |
Wyczyść pamięć podręczną | Czyści wewnętrzną pamięć podręczną kompozytora. |
Wyczyść pamięć podręczną | Czyści wewnętrzną pamięć podręczną kompozytora. |
config | Ustaw opcje konfiguracji |
stwórz projekt | Utwórz nowy projekt z pakietu do podanego katalogu. |
zależy | Pokazuje, które pakiety powodują instalację danego pakietu |
stawiać diagnozę | Diagnozuje system w celu wykrycia typowych błędów. |
dump-autoload | Zrzuca autoloader |
dumpautoload | Zrzuca autoloader |
exec | Uruchom sprzedawany plik binarny / skrypt |
światowy | Umożliwia uruchamianie poleceń w globalnym katalogu kompozytora ($ COMPOSER_HOME). |
Wsparcie | Wyświetla pomoc dotyczącą polecenia |
Dom | Otwiera adres URL repozytorium pakietu lub stronę główną w przeglądarce. |
informacje | Pokaż informacje o pakietach |
w tym | Tworzy podstawowy plik composer.json w bieżącym katalogu. |
zainstalować | Instaluje zależności projektu z pliku composer.lock, jeśli jest obecny, lub opiera się na pliku composer.json. |
licencje | Pokaż informacje o licencjach zależności |
lista | Wyświetla listę poleceń |
przestarzały | Wyświetla listę zainstalowanych pakietów, które mają dostępne aktualizacje, w tym ich najnowszą wersję. |
zabrania | Pokazuje, które pakiety uniemożliwiają instalację danego pakietu |
usunąć | Usuwa pakiet z wymaganego lub wymaganego dev |
wymagać | Dodaje wymagane pakiety do pliku composer.json i instaluje je |
uruchom skrypt | Uruchom skrypty zdefiniowane w pliku composer.json. |
Szukaj | Wyszukaj paczki |
samodzielna aktualizacja | Aktualizuje composer.phar do najnowszej wersji. |
samoaktualizacja | Aktualizuje composer.phar do najnowszej wersji. |
pokazać | Pokaż informacje o pakietach |
status | Pokaż listę lokalnie zmodyfikowanych pakietów |
wskazuje | Pokaż propozycje pakietów |
aktualizacja | Aktualizuje twoje zależności do najnowszej wersji zgodnie z composer.json i aktualizuje plik composer.lock. |
uprawomocnić | Sprawdza poprawność composer.json i composer.lock |
dlaczego | Pokazuje, które pakiety powodują instalację danego pakietu |
Dlaczego nie | Pokazuje, które pakiety uniemożliwiają instalację danego pakietu |
Instalacja
Możesz zainstalować Composer lokalnie, jako część swojego projektu lub globalnie jako plik wykonywalny całego systemu.
Lokalnie
Aby zainstalować, uruchom te polecenia w swoim terminalu.
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');"
Spowoduje to pobranie pliku composer.phar
(plik archiwum PHP) do bieżącego katalogu. Teraz możesz uruchomić php composer.phar
aby użyć Composer, np
php composer.phar install
Globalnie
Aby używać Composer na całym świecie, umieść plik composer.phar w katalogu, który jest częścią twojej PATH
mv composer.phar /usr/local/bin/composer
Teraz możesz używać composer
dowolnym miejscu zamiast php composer.phar
, np
composer install