我想从服务访问缓存目录的路径,以在其中保存一些临时文件。在Symfony2中,这不是问题,但是我对如何在Symfony4中实现这一目标感到困惑。
如果我访问ParameterBag,则会找到日志目录的值,但找不到缓存目录之一。
尽管Kernel.php具有方法
public function getCacheDir()
{
return $this->getProjectDir().'/var/cache/'.$this->environment;
}
我不确定如何从服务中访问它。
在symfony 4中执行此操作的正确方法是什么?
答案 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。