Composer — menedżer pakietów PHP
🎯 Po tej lekcji zainstalujesz Composera, zainicjujesz projekt przez composer init i dodasz pierwszą zależność przez composer require.
Wyobraź sobie, że budujesz aplikację PHP i potrzebujesz biblioteki do wysyłania e-maili, obsługi dat albo logowania zdarzeń. Bez Composera musiałbyś ręcznie pobierać pliki, kopiować je do projektu i samodzielnie śledzić aktualizacje. Composer rozwiązuje ten problem — to menedżer pakietów PHP, który działa jak lista zakupów zależności.
Definiujesz, czego potrzebujesz w pliku composer.json, a Composer pobiera wszystko automatycznie, razem z zależnościami zależności (tak zwanymi transitive dependencies).
Instalacja Composera
macOS i Linux
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
Na macOS możesz też użyć Homebrew:
brew install composer
Windows
Pobierz instalator ze strony getcomposer.org i uruchom go. Instalator doda composer do zmiennej środowiskowej PATH.
Sprawdź instalację
composer --version
Powinieneś zobaczyć coś w stylu:
Composer version 2.x.x ...
Inicjalizacja projektu — composer init
W katalogu nowego projektu uruchom kreator:
composer init
Kreator zapyta o nazwę pakietu (np. twoja-firma/projekt), opis, autora i minimalną wersję PHP. Możesz nacisnąć Enter przy każdym pytaniu, żeby przyjąć wartości domyślne. Na końcu powstanie plik composer.json.
Struktura composer.json
{
"name": "twoja-firma/projekt",
"description": "Mój projekt PHP",
"type": "project",
"require": {
"php": ">=8.1"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
Najważniejsze sekcje:
| Sekcja | Opis |
|---|---|
| require | Pakiety potrzebne do działania aplikacji |
| require-dev | Pakiety tylko dla programistów (testy, narzędzia) |
| autoload | Konfiguracja autoloadera (więcej w następnej lekcji) |
| autoload-dev | Autoloading tylko dla środowiska deweloperskiego |
composer require — dodaj zależność
composer require monolog/monolog
Ta jedna komenda:
- Szuka pakietu
monolog/monologna Packagist. - Pobiera go i wszystkie jego zależności.
- Zapisuje odpis wersji w
composer.jsonicomposer.lock. - Kopiuje kod do katalogu
vendor/.
Packagist — rejestr pakietów PHP
Packagist.org to domyślne repozytorium, z którego Composer pobiera pakiety. Możesz tam wyszukać biblioteki, zobaczyć ich dokumentację, licencję i statystyki pobierania.
Każdy pakiet ma nazwę w formacie vendor/pakiet, np.:
monolog/monolog— popularna biblioteka do logowaniavlucas/phpdotenv— wczytywanie zmiennych środowiskowych z pliku.envphpunit/phpunit— framework do testów jednostkowych
Katalog vendor/ i pliki blokady
Po composer require zobaczysz nowy katalog vendor/ z pobranym kodem oraz plik composer.lock. Ten drugi zapisuje dokładne wersje wszystkich zainstalowanych pakietów — łącznie z zależnościami zależności.
composer.lock powinien być zacommitowany do repozytorium. Dzięki temu każdy developer i serwer produkcyjny zainstaluje dokładnie te same wersje. Katalog vendor/ natomiast trafia do .gitignore — jest generowany automatycznie przez composer install.Podsumowanie przepływu pracy
packagist.org ──> composer require ──> composer.json + composer.lock
│
▼
vendor/
│
▼
require 'vendor/autoload.php';
W kolejnej lekcji zobaczysz, jak skonfigurować autoloading PSR-4, żeby Composer automatycznie wczytywał Twoje klasy — bez ani jednej linii require.
Sprawdź się
Co robi komenda `composer require vendor/pakiet`?
composer require pobiera pakiet z Packagist (lub innego repozytorium), zapisuje go w sekcji require w composer.json, aktualizuje composer.lock i kopiuje kod do vendor/. Jeden krok — wszystko gotowe.
Czym jest Packagist?
Packagist (packagist.org) to centralny rejestr pakietów PHP. Gdy wywołujesz composer require, Composer domyślnie szuka pakietu właśnie tam. Możesz też dodać własne repozytoria (np. prywatne), ale Packagist jest punktem startowym.
Jaka jest różnica między `composer install` a `composer update`?
composer install to komenda dla całego zespołu — instaluje dokładnie te wersje, które są zapisane w composer.lock. composer update szuka nowych, zgodnych wersji i nadpisuje composer.lock. Na serwerze produkcyjnym zawsze używaj composer install, żeby nie dostać niespodzianki.
Ćwiczenie
Utwórz nowy katalog projekt-composer/, wejdź do niego i uruchom composer init (odpowiedz na pytania kreatora lub naciśnij Enter, żeby przyjąć wartości domyślne). Następnie sprawdź zawartość wygenerowanego composer.json. Opcjonalnie: wyszukaj na packagist.org dowolny pakiet i zanotuj jego nazwę w formacie vendor/pakiet.
Pokaż rozwiązanie
mkdir projekt-composer && cd projekt-composer
composer init
# Kreator zapyta o nazwę pakietu, opis, autora itp.
# Możesz przejść przez wszystkie pytania Enterem.
# Wynik: plik composer.json w bieżącym katalogu.
cat composer.json