Дефенирование конфигурации как сервиса? конфигурации типа такой symfony.com/doc/current/components/config/definiti... когда ключ-значение - не хватает
и я сделал class DownloadMap {
private static $filter = [
"key" => "category",
"field" => "property__category__multi_string"
];
private static $order = [
[
"key" => "name",
"field" => "name"
],
[
"key" => "format",
"field" => "control__mimeType__string"
],
[
"key" => "size",
"field" => "control__fileSize__string"
]
];
public static function getFilter()
{
return self::$filter;
}
public static function getOrder()
{
return self::$order;
}
}
ну и в контроллере вызов DownloadMap::getOrder()
но вот что если надо переопределить в следующем проекте? вернее не "что если" а на реально надо
пихать в сервис-контейнер?parameters:
download_map_class: namespace\DownloadMap
services:
download_map:
class: %download_map_class%
криво или нет получается?
$this->container->get("download_map")->getOrder()
как можно такое сделать?

21 Авг 2019 в 07:02
179 +1
0
Ответы
1

Для более гибкого и настраиваемого подхода вы можете использовать сервис контейнер и инъекцию зависимостей. Вместо использования статического класса DownloadMap, вы можете создать сервис DownloadMapService и зарегистрировать его в сервис-контейнере.

Пример:

Создайте класс DownloadMapService:namespace App\Service;
class DownloadMapService
{
private $filter;
private $order;
public function __construct(array $filter, array $order)
{
$this->filter = $filter;
$this->order = $order;
}
public function getFilter()
{
return $this->filter;
}
public function getOrder()
{
return $this->order;
}
}Зарегистрируйте сервис в файле конфигурации сервис-контейнера:services:
App\Service\DownloadMapService:
arguments:
$filter: ['key' => 'category', 'field' => 'property__category__multi_string']
$order:
- ['key' => 'name', 'field' => 'name']
- ['key' => 'format', 'field' => 'control__mimeType__string']
- ['key' => 'size', 'field' => 'control__fileSize__string']Теперь, в вашем контроллере или другом месте, где нужно использовать DownloadMapService, вы можете инжектировать его через контейнер:$downloadMapService = $this->container->get('App\Service\DownloadMapService');
$downloadMapService->getOrder();

Этот подход позволит вам легко переопределить параметры и настройки DownloadMapService для разных проектов, достаточно изменить конфигурацию в файле сервис-контейнера.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир