Сервис для получения параметров из yml - PullRequest
0 голосов
/ 23 октября 2018

У меня проблема с сервисом для получения параметров из файла yml в symfony.Теперь мой сервис выглядит очень просто.

class MyService extends Controller
{
    /**
     * @var string
     */
    private $keys;

    public function __construct($keys)
    {
        $this->keys = $keys;
    }

    public function getKeys()
    {
        return $this->keys;
    }

}

А в методе Controller:

 public function exampleAction()
    {
        $keys = new MyService('keys');
        return var_dump($this->getParameter($keys->getKeys()));

    }

Но когда я пытаюсь добавить функцию getParameter в сервис (посмотрите код под этим текстом), этоне работа.Служба:

class MyService extends Controller
{
    /**
     * @var string
     */
    private $keys;

    public function __construct($keys)
    {
        $this->keys = $keys;
    }

    public function getKeys()
    {
        return $this->getParameter($this->keys);
    }

}

И контроллер:

public function exampleAction()
    {
        $keys = new MyService('keys');
         return var_dump($keys->getKeys());

    }

Кто-то может сказать мне, что не так?Thx:)

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Я не знаю вашу структуру параметров, но вы можете взять это в качестве примера.если вы хотите получить доступ к

yourKey

.

parameters:
    key:
        yourKey: bar
        bar: baz

$params = $this->getParameter('bar');
$yourKey = $params['yourKey'];

, вы можете узнать больше о YAML здесь Компонент Yaml

0 голосов
/ 23 октября 2018

Даже если вы упоминаете, что это услуга, на самом деле это controller.(Потому что ваши услуги расширяет controller).Я не думаю, что это лучший подход.

Однако, поскольку вы находитесь в controller и не упомянули ни о каком виде DI, вы можете сделать это следующим образом.

public function __construct(Symfony\Component\DependencyInjection\Container $container)
{
    $this->container = $container;
}

public function getKeys()
{
    return $this->container->getParameter('keys');
}

Вашему вниманию,

Однако, если вы используете DI.Не вводите весь container, так как он имеет много недостатков в производительности.Передайте только необходимые параметры.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...