В 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
в любом месте вашего кода, не внедряя его явно.