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

标签 symfony4

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

相关文章:

php - Opcache 预加载并缺少 App_KernelProdContainer.preload.php

symfony4 - 映射异常 : "Extension DOM is required."

Symfony : These messages are not available for the given locale and cannot be found in the fallback locales

symfony - 定义默认路由/Symfony4(包括URL)

php - 如何在 Symfony 4 控制台命令中获取应用程序根路径

laravel - 在 Laravel Homestead 环境中获取 symfony`project 的供应商文件夹时出现问题

vue.js - 使用 Prop vuejs + symfony

php - Symfony 4的Rest-bundle需要4.3版本的配置,而Symfony 4使用5.0版本

symfony - axios 中的动态主机

php - Symfony 4 TextType required = false 获取 "string"类型的预期参数,给定 "NULL"