我想从服务访问缓存目录的路径,以在那里保存一些临时文件。在 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 。
关于Symfony 4:如何从服务访问缓存目录的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51083119/