Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

  • Acme\Command\HelloCommand → src/Command/HelloCommand.php
  • Acme\Form\Type\EmployeeType → src/Form/Type/EmployeeType.php

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

<?php

namespace Acme\Command;

class HelloCommand
{
}

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

<?php

require 'vendor/autoload.php';

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

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