Symfony4: как я могу получить доступ к пути к каталогу кеша из службы - PullRequest
0 голосов
/ 28 июня 2018

Я хочу получить доступ к пути к каталогу кэша из службы, чтобы сохранить там некоторые временные файлы. В Symfony2 это не было проблемой, но я застрял, как добиться этого в Symfony4.

Если я получаю доступ к ParameterBag, я нахожу значение каталога журнала, но не значение каталога кэша.

Хотя Kernel.php имеет метод

public function getCacheDir()
{
    return $this->getProjectDir().'/var/cache/'.$this->environment;
}

Я не уверен, как получить к нему доступ из службы.

Как правильно сделать это в Symfony 4?

1 Ответ

0 голосов
/ 28 июня 2018

Мой плохой .... так что вы можете получить доступ к информации.

Если вы находитесь в сервисе, вы должны передать конструктору вашего сервиса ParameterBag следующим образом:

/** @var ParameterBagInterface */
private $params;

private $cachePath;

public function __construct(LoggerInterface $logger, ParameterBagInterface $params)
{
    $this->params = $params;
    $this->cachePath = $this->prepareCacheDir();
    $this->logger = $logger;
}

Итак, позже в вашем методе вы можете сделать следующее:

private function prepareCacheDir()
{
    $kernelCache =  $this->params->get('kernel.cache_dir');
    $cachepath = $kernelCache . DIRECTORY_SEPARATOR . 'sqlDumps'
        . DIRECTORY_SEPARATOR . date_format(date_create(), 'Y_m_d');

    return $cachepath;
}

Важно: напишите значение, прежде чем пытаться его прочитать. Моя ошибка заключалась в том, что я использовал $ this-> param до того, как установил значение в конструкторе.

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