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 。
我想从服务访问缓存目录的路径以在其中保存一些临时文件。在 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 。