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

时间:2018-06-28 12:36:15

标签: symfony4

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

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

尽管Kernel.php具有方法

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

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

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

1 个答案:

答案 0 :(得分:0)

我的坏人...。所以您可以访问信息。

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