自动写入 services.yml 文件

Write automatically in services.yml file

我想创建一个 php class,它根据我的实体(在服务器 运行 上或使用命令)在 services.yml 文件中自动写入服务.是否可以这样做,还是我应该只使用文件系统来做?

可以,但新创建的服务将在下一次请求之前不可用。

检索捆绑包的 services.yml

// src/AcmeBundle/Controller/DefaultController.php

$kernel = $this->get('kernel');
$servicesPath = $kernel->locateResource('@AcmeBundle/Resources/config/services.yml');`

或者您的应用程序的全局 services.yml :

$servicesPath = $kernel->getRootDir().'/config/services.yml';``

将您的新服务写入:

$parser = new \Symfony\Component\Yaml\Parser();
$dumper = nrw \Symfony\Component\Yaml\Dumper();

// Get the services already configured, use the path of 'services.yml' retrieved from bundle/application
$oldServices = $parser->parse($servicesPath); 
$newService = array('your_service_name' => array( 
   // Here your arguments, tags, ...
);

$mergedServices = array_merge($oldServices, $newService);
$yamlServices = $dumper->dump($mergedServices);

// Write all in the configuration file
file_put_contents($servicesPath, $yamlServices); // $services is the 'services.yml' path