Условно проверить наличие предлагаемого пакета в PHP (Composer)

0

Я разрабатываю пакет PHP (распространяемый на Composer), который может извлечь выгоду из регистрации, но не требует его. Я видел много примеров файлов composer.json которые включают предлагаемые пакеты:

{
    "suggest": {
        "monolog/monolog": "Allows more advanced logging of the application flow"
    }
}

Как мне узнать, доступна ли библиотека во время выполнения? Я хочу создать экземпляр экземпляра \Monolog\Logger по умолчанию, если он доступен, разрешить покупателю пакета передавать свою собственную реализацию интерфейса Psr\Log\LoggerInterface если они того пожелают. Есть ли какие-либо рекомендации по этому поводу?

Теги:
composer-php
monolog
psr-3

3 ответа

1

Если вы предлагаете использовать логгер, то разработчик может использовать ваш пакет, чтобы использовать это!

Я бы посоветовал вам зависеть от пакета регистратора PSR-3, чтобы обеспечить легкую интеграцию, и пусть разработчик сделает все остальное. Нет волшебного использования регистратора, который, по вашему мнению, установлен! Что Psr\Log\LoggerAwareInterface существует по какой-то причине.

0

Я склонен согласиться с ответом Томаша Вотрубы в плане лучшей практики, но я все равно отвечу на исходный вопрос:

Если вы действительно хотите обнаружить, присутствует ли монолог и что-то сделать, если это так, и это применимо к любому пакету, проще всего вызвать class_exists('Monolog\Logger') и если это правда, вы знаете, что монолог существует. Это должно работать до тех пор, пока у вас нет сломанного автозагрузчика в цепочке, который генерирует исключение, если он не может найти класс, но если вы используете только автозагрузчик Composer, все это хорошо.

Разумеется, это хорошая идея, чтобы позволить пользователю внедрить свою собственную реализацию PSR-3 и использовать ее, если она есть.

0

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

Необязательная зависимость - это запах кода и магия, которые легко скрыть. Для более глубокого объяснения, проверка Нет такой вещи, как необязательная статья зависимости.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню