在Symfony 2中,我正在使用此捆绑库(https://github.com/LeaseWeb/LswApiCallerBundle)来进行API请求。
这是执行此操作的功能:
$this->get('api_caller')->call(new HttpPostJson($path, $object));
如果我把上面的函数放在DefaultController中就行了。 但是我想在没有扩展控制器的外部类中使用该函数。
由于
答案 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();
}
}