Несколько совпадающих пространств имен PHP в сторонних библиотеках

В настоящее время я пишу несколько сидеров Laravel для заполнения базы данных в моей тестовой среде. Я использую отличный Faker для генерации значений столбцов и плагин Faker под названием CronExpressionGenerator для генерации случайных значений cron.

$faker->addProvider(new \CronExpressionGenerator\FakerProvider($faker));
$cronTxt = $faker->cron();

Затем я использую пакет под названием Парсер выражений Cron для генерации метки времени следующего вхождения каждого выражения cron.

$cron = new \Cron\CronExpression($cronTxt, new DateTimeZone(DateTimeZone::UTC));

Оба этих пакета устанавливаются с помощью Composer.

К сожалению, оба пакета, похоже, используют пространство имен \Cron\CronExpression:

Несколько совпадающих пространств имен PHP в сторонних библиотеках

Поэтому, когда я запускаю свою миграцию db, PHP прерывает подпись функции.

Symfony\Component\Debug\Exception\FatalThrowableError  : Argument 2 passed to Cron\CronExpression::__construct() must be an instance of Cron\FieldFactory, instance of DateTimeZone given

Редактировать - похоже, сервис изображений сейчас не работает. На приведенном выше снимке экрана показано, что PHPStorm показывает два совпадения CronExpression, по одному для каждого:

  • vendor/dragonmantank/cron-expression/src/Cron
  • vendor/polander/cron/src/Cron

Я не думаю, что есть способ обойти это, кроме разветвления второй библиотеки и изменения пространства имен и использования вашего репозитория VCS, или просто копирования его в свой проект и изменения его там. В конце концов, это действительно похоже на один класс. Такое простое пространство имен Cron - довольно плохой дизайн.

Devon 07.08.2018 23:08

Есть ли какая-то практическая причина, по которой вы используете poliander/cron вместо многих других пакетов, которые предоставляют аналогичные функции и не конфликтуют с гораздо более популярными пакетами?

rob006 07.08.2018 23:21
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
66
0

Другие вопросы по теме