1

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

4

1 回答 1

1

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

要检索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
于 2016-02-16T10:27:54.927 回答