Управление пользовательским кодом с помощью автозагрузчика Composer?

Я начал новый проект, где я использую Composer для обработки некоторых зависимостей, а также их автоматической загрузки.

Я сохраняю только файл composer.json в VCS, а не весь каталог поставщика, поэтому я не хочу начинать добавлять туда свой код.

Как я должен обрабатывать свой собственный код для конкретного проекта, чтобы он автоматически загружался?

Это на самом деле очень просто. Правильный подход – исключение каталога поставщиков из вашего репозитория. Ваш код должен храниться в отдельном месте (например, src).

Используйте свойство autoload, чтобы этот композитор распознал ваше пространство имен:

{ "autoload": { "psr-4": { "Acme\\": "src/" } } } 

Предполагая, что у вас есть имена классов, следуя стандарту psr-4, он должен работать. Ниже приведен пример примеров имен классов и их местоположений в файловой системе:

  • Acme \ Command \ HelloCommand -> src / Command / HelloCommand.php
  • Acme \ Form \ Type \ EmployeeType -> src / Форма / Тип / EmployeeType.php

Не забудьте определить пространство имен для каждого класса. Вот пример Acme \ Command \ HelloCommand:

 <?php namespace Acme\Command; class HelloCommand { } 

Не забудьте включить автозагрузчик в контроллеры PHP:

 <?php require 'vendor/autoload.php'; 

Подробнее о стандарте PSR-4 в группе взаимодействия PHP Framework .

Обратите внимание: если вы отредактируете composer.json , вам нужно либо запустить install, update или dump-autoload, чтобы обновить пути класса автозагрузчика.