外部类中的Symfony 2 api_caller

时间:2014-03-08 11:11:07

标签: symfony

在Symfony 2中,我正在使用此捆绑库(https://github.com/LeaseWeb/LswApiCallerBundle)来进行API请求。

这是执行此操作的功能:

$this->get('api_caller')->call(new HttpPostJson($path, $object));

如果我把上面的函数放在DefaultController中就行了。 但是我想在没有扩展控制器的外部类中使用该函数。

由于

1 个答案:

答案 0 :(得分:1)

这是您在服务容器中注册新服务的那一刻。

在您的bundle的Resources / config / services.yml中,假设您正在使用YAML

services:
    your_service:
        class:     Your\Bundle\Namespace\YourClassName
        arguments: ["@api_caller"]

然后在你的外部课程

<?php

namespace Your\Bundle\Namespace;

use Lsw\ApiCallerBundle\Caller\LoggingApiCaller;
use Lsw\ApiCallerBundle\Call\HttpPostJson;

class YourClassName
{
    private $apiCaller;

    public function __construct(LoggingApiCaller $apiCaller)
    {
        $this->apiCaller = $apiCaller;
    }

    public function doSomething()
    {
        $this->apiCaller->call(new HttpPostJson($path, $object));

        //....
    }
}

然后在您的控制器中

class DefaultController extends Controller
{
    public function someAction()
    {
        $foo = $this->get('your_service');
        $foo->doSomething();
    }
}