Symfony2初始化服务

时间:2015-07-17 08:47:06

标签: symfony

我使用bundle(wa72 / jsonrpc-bundle)作为服务。对于所有应用程序,我需要在构造服务之后初始化一个值。我不认为我需要一个听众,因为我只需要设置一次,而不是在每次请求之前。 这就是我需要做的事情:

$wa72_jsonrpc = $this->kernel->getContainer()->get('wa72_jsonrpc.jsonrpccontroller');            
$wa72_jsonrpc->setSerializationContext(SerializationContext::create()->enableMaxDepthChecks());

我怎样才能为所有应用程序执行此操作,只需一次?

2 个答案:

答案 0 :(得分:0)

如果我没有误会,如果你想将事物暴露给每个控制器而没有额外的工作,那么内核onRequest监听器就会这样做。

另一种方法是设置另一个明确包装您的设置并将其作为服务公开给您的应用的服务

的src /的appbundle /服务/ jsonrpcService.php:

<?php
namespace AppBundle\Services;

class jsonrpcService
{
    public $jsonrpc;

    public function __construct($wa72_jsonrpc)
    {
        $wa72_jsonrpc->setSerializationContext(SerializationContext::create()->enableMaxDepthChecks());
        $this->jsonrpc = $wa72_jsonrpc;
    }
}

应用程序/配置/ config.yml

services:
    jsonrpc:
        class:        AppBundle\Services\jsonrpcService
        arguments:    [@wa72_jsonrpc.jsonrpccontroller]

在任何控制器中只需致电:

$jsonrpc = $this->get('jsonrpc')->jsonrpc;

答案 1 :(得分:0)

没有详细记录,但您应该按照here

所述config.yml中的捆绑部分启用它
  

如果您使用jms_serializer,您还可以配置排除策略   (组,版本或最大深度检查):

# app/config/config.yml
wa72_json_rpc:
    functions:
        myfunction1:
            service: "mybundle.servicename"
            method: "methodofservice"
            jms_serialization_context:
                group: "my_group"
                version: "1"
                max_depth_checks: true

当然,您似乎也需要启用jms serializer bundle

希望这个帮助