Как получить cacheDir в произвольном классе?

В Symfony, для получения пути к директории кэша в произвольном классе, вы можете воспользоваться сервисом kernel.

Первым шагом, вам необходимо внедрить сервис kernel в ваш класс. Для этого вам понадобится использовать зависимость в конструкторе класса или можно использовать аннотацию @required (доступно начиная с Symfony 3.3), чтобы указать Symfony, что этот сервис необходим для работы вашего класса.

Далее, вы можете использовать метод getCacheDir() у объекта kernel, чтобы получить путь к директории кэша. Выглядит это примерно так:

use SymfonyComponentHttpKernelKernelInterface;

class YourClass
{
    private $cacheDir;

    public function __construct(KernelInterface $kernel)
    {
        $this->cacheDir = $kernel->getCacheDir();
    }
}

Теперь у вас есть доступ к пути к директории кэша через свойство $cacheDir.

Если вы хотите использовать сервис kernel без внедрения его в ваш класс, можно воспользоваться сервис-локатором Symfony (для Symfony 3.3 и выше). Вы можете написать такую функцию:

use SymfonyComponentHttpKernelKernelInterface;
use SymfonyComponentDependencyInjectionContainerInterface;

function getCacheDir(ContainerInterface $container)
{
    /** @var KernelInterface $kernel */
    $kernel = $container->get('kernel');

    return $kernel->getCacheDir();
}

А затем вызвать эту функцию в вашем классе:

class YourClass
{
    public function __construct(ContainerInterface $container)
    {
        $cacheDir = getCacheDir($container);
        // использовать $cacheDir по своему усмотрению
    }
}

Это позволит вам получить путь к директории кэша из сервиса kernel в любом месте вашего кода, не внедряя его явно.