Allow caching of parameter values

Increase composer php version to match
This commit is contained in:
Tim 2023-06-12 01:00:36 +02:00
parent 61b8a68705
commit 35228c8496
2 changed files with 10 additions and 2 deletions

View File

@ -3,7 +3,7 @@
"description": "Simple bundle for storing parameters in a database",
"type": "symfony-bundle",
"require": {
"php": "^8.0",
"php": "^8.1",
"doctrine/orm": "^2.0",
"symfony/form": "^5.0|^6.0",
"symfony/twig-bundle": "^5.0|^6.0"

View File

@ -15,6 +15,8 @@ class ParameterService
{
private array $config;
private array $cache = [];
public function __construct(
private readonly EntityManagerInterface $em,
private readonly ParameterBagInterface $parameter,
@ -29,6 +31,10 @@ class ParameterService
*/
public function get(string $name, bool $parse = true): mixed
{
if (array_key_exists($name, $this->cache)) {
return $this->cache[$name];
}
$split = explode('_', $name);
$category = array_shift($split);
@ -53,7 +59,8 @@ class ParameterService
$value = $parameter->getValue();
}
return Parameter::parseValue($value, $this->config[$category][$name]['type']);
$this->cache[$name] = Parameter::parseValue($value, $this->config[$category][$name]['type']);
return $this->cache[$name];
} else {
return null;
}
@ -73,6 +80,7 @@ class ParameterService
$parameter->setValue($value);
$this->em->persist($parameter);
$this->em->flush();
$this->cache[$name] = $value;
}
private function supplementConfig(array $rawConfig): array