У меня есть проект с 2 пакетами, которые используют один и тот же базовый пакет для предоставления некоторого logi c.
Laravel project:
Package 1 -> uses package 3
Package 2 -> uses package 3
Теперь у меня проблема в том, что в конфигурации для базового пакета, который я включил для регистрации нескольких классов, которые будут использоваться:
'requestParameters' => [
SearchParameter::class,
ReturnsParameter::class,
OrderByParameter::class,
RelationsParameter::class,
LimitParameter::class,
OffsetParameter::class,
CountParameter::class,
],
Это позволяет мне модульно регистрировать дополнительные классы по запросу и расширять модель при необходимости.
Это отлично работает, когда один пакет использует это как зависимость, потому что по умолчанию он будет использовать 7 заданных классов, но если вы хотите добавить / удалить некоторые из них, вы можете переопределить конфигурацию в другом пакете и предоставить, например:
'requestParameters' => [
SearchParameter::class,
],
, который будет в результате этот пакет фактически использует только один класс вместо 7.
Я делаю это путем слияния конфигурации в другом пакете с:
$this->mergeConfigFrom(__DIR__ . '/Config/query-builder.php', 'query-builder');
Теперь, где это представлено проблема в том, что 2 пакета используют эту зависимость, и если я переопределю ее из одного пакета, она будет перезаписана для еще один.
Выполнение этого слияния с 1 параметром для Package 1
приводит к Package 2
с использованием 1 параметра ... что неверно.
Я думал, что внутри 3-й пакет Я мог бы предоставить дополнительный ключ, говорящий что-то вроде:
'requestParametersLookupKey' => 'requestParameters',
, чтобы я мог предоставить несуществующий ключ, таким образом делая его более модульным ... однако, если я переопределю это в одном пакете, Я снова останусь с той же проблемой, потому что он снова изменит ключ поиска глобально.
Есть ли способ предоставить другую конфигурацию таким образом?