Przejdź do treści
Programowanie

Zarządzanie zależnościami PHP z Composer: dobre praktyki

1 kwietnia 2026 6 min czytania

Composer stał się nieodłączną częścią profesjonalnego projektu PHP. Nie tylko instaluje pakiety, ale zarządza autoloadingiem klas, rezolwuje konflikty wersji i daje dostęp do tysięcy bibliotek przez Packagist. Kilka praktyk sprawia że praca z Composerem jest bezpieczniejsza i przewidywalna.

composer.json vs composer.lock

Plik composer.json definiuje wymagania projektu z możliwymi zakresami wersji. Plik composer.lock zapisuje dokładne wersje zainstalowanych pakietów. Oba pliki powinny być w repozytorium. Bez composer.lock, polecenie composer install na różnych maszynach może zainstalować różne wersje pakietów, co prowadzi do trudno diagnozowalnych problemów.

Semantyczne wersjonowanie

Pakiety PHP zazwyczaj używają semantycznego wersjonowania (semver): MAJOR.MINOR.PATCH. Operator karetki w composer.json, czyli ^1.2.3, oznacza "1.2.3 lub nowszy, ale mniejszy niż 2.0.0". Pozwala to automatycznie pobierać poprawki bezpieczeństwa bez ryzyka breaking changes z nowej wersji głównej.

Security advisories

Polecenie composer audit sprawdza zainstalowane pakiety pod kątem znanych podatności z bazy Packagist Security Advisories. Uruchamiaj je regularnie i włącz do procesu CI. Zainstalowane pakiety z nieaktualizowanymi podatnościami to realne ryzyko bezpieczeństwa.

Autoloading klas

Composer generuje autoloader dla zdefiniowanych w composer.json przestrzeni nazw. Standard PSR-4 mapuje przestrzeń nazw na katalog plików. Zamiast ręcznych require i include, po załadowaniu vendor/autoload.php, klasy ładują się automatycznie przy pierwszym użyciu.

Prywatne repozytoria

Własne pakiety firmowe możesz hostować przez Satis (własna instancja Packagist) lub Private Packagist (usługa płatna). VCS repositories w composer.json pozwala bezpośrednio wskazać prywatne repozytorium Git jako źródło pakietu. Przydatne dla własnych bibliotek współdzielonych między projektami.

Optymalizacja autoloadera

Polecenie composer install --optimize-autoloader lub composer dump-autoload -o generuje zoptymalizowany autoloader ze statyczną mapą klas. Na produkcji powinno być uruchamiane po każdym wdrożeniu. Redukuje czas ładowania klas szczególnie widoczny w dużych projektach.