Дефенирование конфигурации как сервиса? конфигурации типа такой 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() как можно такое сделать?
Для более гибкого и настраиваемого подхода вы можете использовать сервис контейнер и инъекцию зависимостей. Вместо использования статического класса 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 для разных проектов, достаточно изменить конфигурацию в файле сервис-контейнера.
Для более гибкого и настраиваемого подхода вы можете использовать сервис контейнер и инъекцию зависимостей. Вместо использования статического класса 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 для разных проектов, достаточно изменить конфигурацию в файле сервис-контейнера.