Symfony предоставляет параметр kernel.project_dir
, который можно использовать внутри контейнера служб, который вы можете добавить в службы или получить из контейнера (внутри контроллера):
$this->getParameter('kernel.project_dir');
В службе вы простовставьте его в конструктор:
class MyService
{
private $projectDir;
public function __construct(string $projectDir)
{
$this->projectDir = $projectDir;
}
}
В вашей конфигурации вам может потребоваться убедиться, что строка передана правильно, либо установив ее непосредственно для этой конкретной службы:
# config/services.yaml
...
services:
...
App\MyService:
arguments:
$projectDir: '%kernel.project_dir%'
В качестве альтернативы выможет связать этот параметр с именем переменной, так что конфигурация автоматически его распознает:
# config/services.yaml
...
services:
_defaults:
...
bind:
$projectDir: '%kernel.project_dir%'
Тогда все службы (зарегистрированные в этом файле конфигурации), имеющие параметр $projectDir
, получат значение изэтот параметр.