Дефенирование конфигурации как сервиса? конфигурации типа такой 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
202 +1
0
Ответы
1

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

Пример:

Создайте класс DownloadMapService:namespace App\Service;
class DownloadMapService
{
private filter;privatefilter;
private
filter;private
order;
public function __construct(array filter,arrayfilter, array filter,arrayorder)
{
$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=downloadMapService = downloadMapService=this->container->get('App\Service\DownloadMapService');
$downloadMapService->getOrder();

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

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир