2015-12-04 2 views
2

Я пишу новый файл composer.json для проекта, чтобы он мог быть доступен или Packagist или прямая ссылка на его репозиторий GitHub. Для проекта требуется одно или оба расширения HTTP-клиента: pecl_http или curl. Если я укажу оба пакета под require, Composer выдаст ошибку, если оба они не установлены.PHP Composer: Требовать хотя бы одну зависимость или другую?

Как я могу сказать, что у Composer нормально установлено только одно из этих двух расширений?

ответ

0

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

Обычный способ для пакетов - указать расширения как «предложить». Ваш код уже должен иметь дело с обнаружением, какое расширение присутствует, и выбрать правильный путь кода, нет никакой дополнительной проблемы, чтобы испустить ошибку, если все не хватает.

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

С другой стороны: Работа с HTTP-материалами выглядит так, как будто вы, вероятно, должны полагаться на интерфейсы PSR-7 и позволить разработчику выбирать реализацию HTTP-клиента для использования.

Смежные вопросы