em = $em; $this->parameter = $parameter; $this->config = $config; } /** * @param string $name * @param bool $parse * * @return string */ public function get($name, $parse = true) { $paramRepo = $this->em->getRepository(Parameter::class); $parameter = $paramRepo->findOneBy(['name' => $name]); if ($parameter) { if ($parse) { // find and replace all %parameter% with their value $value = preg_replace_callback('/%([^%\s]+)%/', function ($match) { $key = $match[1]; // first try locally if ($value = $this->get($key)) { return $value; } // then try with parameter bag return $this->parameter->get($key); }, $parameter->getValue() ); } else { $value = $parameter->getValue(); } return $value; } else { return null; } } /** * @param $name * @param $value */ public function set($name, $value) { $paramRepo = $this->em->getRepository(Parameter::class); /* @var Parameter $parameter */ $parameter = $paramRepo->findOneBy(['name' => $name]); if (!$parameter) { $parameter = (new Parameter())->setName($name); } $parameter->setValue($value); $this->em->persist($parameter); $this->em->flush(); } /** * @return array */ public function getConfig() { return $this->config; } }