Symfony4:如何从服务访问缓存目录的路径

Symfony4: How can I access the path to the cache directory from a service

我想从服务访问缓存目录的路径以在其中保存一些临时文件。在 Symfony2 中这不是问题,但我不知道如何在 Symfony4 中实现它。

如果我访问 ParameterBag,我会找到日志目录的值,但找不到缓存目录的值。

虽然Kernel.php有方法

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

我不确定如何从服务访问它。

在 symfony 4 中执行此操作的正确方法是什么?

我的错....所以你可以访问这些信息。

如果您在服务中,则必须像这样在服务的构造函数中传递 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 。