Сразу добавьте файл autoload.php в начало вашего скрипта – это сэкономит часы ручной настройки. Подключение внешних пакетов без автоматической подгрузки классов – бессмысленная трата времени. Убедитесь, что структура файлов соответствует PSR-4. Если нет – укажите нужный namespace в разделе «autoload» конфигурационного файла. Иначе проект просто не запустится корректно.
Не держите зависимости в голове – пусть это делает JSON. Указывайте конкретные версии, избегайте мягких ограничений вроде «^» или «~», если не хотите неожиданных обновлений после очередного update. Без стабильного контроля над версиями любое приложение начинает вести себя непредсказуемо. И да, проверьте, поддерживает ли пакет вашу версию РНР. Многие библиотеки просто не работают с устаревшими релизами, а ошибки могут проявиться далеко не сразу.
Работаете в команде? Никогда не коммитьте каталог vendor. Добавьте его в .gitignore. Вместо этого держите под контролем только composer.json и composer.lock. Это обеспечит одинаковое окружение у всех разработчиков и на проде. Иначе – хаос. Особенно если у кого-то локально тянутся несовместимые версии.
Не забывайте про секцию «scripts» – она не только для запуска тестов. Через неё можно автоматизировать всё: от очистки кэша до пересборки классов. Один раз настроили – и забыли. На больших проектах это критично.
Установка Composer и инициализация проекта с файлом composer.json
Скачай исполняемый файл с официального сайта – выбирай версию под нужную систему. Для Windows – Composer-Setup.exe, на Linux и macOS проще работать с командой в терминале:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Если всё прошло без ошибок – перемести composer.phar
в системный путь:
sudo mv composer.phar /usr/local/bin/composer
Быстрая проверка
Открой консоль и набери composer --version
. Если увидел номер релиза – всё работает.
Запуск нового проекта
Создавать файл вручную – прошлый век. Команда composer init
сэкономит время: она по шагам предложит задать имя, описание, лицензию, автозагрузку и список внешних библиотек. По завершении в корне появится composer.json
– главный конфигурационный файл для дальнейшей работы.
Пример команды, если нужно сразу добавить зависимости:
composer init --require=monolog/monolog:^3.0 --name=vendor/project --no-interaction
Хочешь минимализм? Просто создай пустой файл с двумя скобками:
echo "{}" > composer.json
Но зачем усложнять? Проще использовать интерактивный режим – меньше шансов ошибиться и сразу получаешь корректную структуру.
Добавление, обновление и удаление библиотек через команды Composer
Установка нужного пакета происходит через require
. Указываешь название и, при необходимости, конкретную версию:
composer require monolog/monolog "^3.0"
Если версия не указана – подтянется последняя стабильная. Можно ставить сразу несколько компонентов, просто перечислив их через пробел. Для разработки – добавляй флаг --dev
, чтобы не засорять боевую среду тестовыми инструментами:
composer require phpunit/phpunit --dev
Как обновлять
Обновление всего проекта – composer update
. Это перетрясёт все зависимости, установив их по максимальным допустимым версиям согласно composer.json
. Хочешь обновить выборочно – укажи название:
composer update guzzlehttp/guzzle
Если проект начал сыпаться после обновления, скорее всего, одна из библиотек потянула несовместимую версию – фиксируй версии вручную или используй composer.lock
как точку контроля.
Удаление лишнего
Команда для удаления – remove
. Пример:
composer remove symfony/var-dumper
Она вычистит компонент из composer.json
и удалит файлы из vendor
. Если компонент был обязательным – проект не заведётся. После удаления лучше пересобрать автозагрузку:
composer dump-autoload
Не держи в проекте мёртвый код. Лишние зависимости – это дыры в безопасности и мусор в сборке. Следи за тем, что ставишь, обновляешь и удаляешь. Команды простые, последствия – нет.
Автозагрузка классов с использованием PSR-4 и настройка autoload в composer.json
Укажи пространство имён и директорию в разделе autoload
файла composer.json
, чтобы Composer автоматически подхватывал классы по стандарту PSR-4. Пример:
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
После этого не забудь выполнить composer dump-autoload
. Без этого обновления не вступят в силу. Это обязательный шаг при добавлении или изменении структуры директорий и пространств имён.
Как устроена связка PSR-4 и файловой системы
Каждое пространство имён должно точно соответствовать структуре директорий. Класс App\Controller\UserController
обязан находиться по пути src/Controller/UserController.php
. Одна лишняя или пропущенная папка – и загрузка сломается. Это не рекомендация, а требование спецификации.
Частые ошибки и как их избежать
Нельзя смешивать регистры в именах директорий и классов – автозагрузка не прощает таких мелочей. Не вставляй слэш в конец пространства имён в ключе, Composer сам корректно обработает его. И не пытайся задать несколько корней для одного и того же пространства имён – конфигурация станет нечитаемой и ведёт к конфликтам.
Всё, что тебе нужно знать о PSR-4, официально задокументировано на сайте PHP-FIG:
https://www.php-fig.org/psr/psr-4/
Для полной документации по autoload-разделу – смотри официальную страницу Composer: