Пакет Composer: автозагрузка и расширение другого пакета

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

В настоящее время я работаю над пакетом, который его основной класс расширяет класс из другого пакета, так что на моем composer.json У меня есть пакет, который я расширяю, объявленный как требование:

"require": {
"php": ">=5.3.0",
"ext-mbstring": "*",
"author/BasePackage": "dev-master"},

И, если я выпущу composer update Я получаю хороший vendor каталог внутри моего проекта с author/BasePackage Зависимость скачана там.

Итак, мой вопрос в моем файле основного класса src\Extended.php Мне нужно вручную сделать что-то вроде require_once __DIR__ . "/../vendor/autoload.php"; для того, чтобы автозагрузить BasePackage так что я могу сделать class Extended extends \BasePackage\BasePackage,

Это нормально? Как я должен загрузить свои зависимости пакета? Когда я фиксирую этот пакет на GitHub или около того, я игнорирую vendor каталог и если кто-то использует это, требуя его в своих проектах require_once __DIR__ . "/../vendor/autoload.php"; потерпит неудачу, потому что это не будет там, где я ожидал.

Как мне это сделать?

Спасибо.

0

Решение

Нет, это не хорошо.

Вы можете смело предполагать, что любой, кто использует ваш пакет, использует Composer. И он будет использовать автозагрузчик Composer. Таким образом, он может загружать как ваш собственный класс из пакета, так и любой другой класс, от которого зависит ваш пакет, при условии, что вы перечислили его как зависимость в своем пакете.

Не загружайте вручную другие классы! Вам не нужно.

Ваши тесты в вашем пакете должны включать vendor/autoload.php в начальной загрузке — это позволит вашему классу быть непосредственно используемым, потому что другие классы пакетов также могут быть автоматически загружены. Любые примеры сценариев должны также включать созданный автозагрузчик.

Если ваш пакет используется где-то еще, этот автозагрузчик будет действовать так же: все классы, которые Composer удастся загрузить и которые имеют правильное объявление автозагрузки, могут использоваться непосредственно после включения автозагрузчика.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector