Symfony2获得服务或获得容器服务

Rob*_*zzi 1 service web-services symfony symfony-2.4

我刚刚在Symfony2中实现了我的第一个服务.

我注意到,在控制器方法中,我是否这样调用服务

$this->container->get('main.service');
Run Code Online (Sandbox Code Playgroud)

或者

$this->get('main.service');
Run Code Online (Sandbox Code Playgroud)

没有区别.

我同样得到了这两项服务.

差异在哪里?

Ahm*_*ani 7

如果您正在扩展Symfony提供的基本控制器,则没有区别.

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class YourController extends Controller
Run Code Online (Sandbox Code Playgroud)

如果您深入了解Symfony\Bundle\FrameworkBundle\Controller\Controller的实现,您可能会注意到它提供的get()帮助程序与您最初执行的操作完全相同(通过容器获取服务).

那么,那么,

$this->get('something')只是简单地将一个呼叫封装起来没有区别$this->container->get('something').


这是您在执行get()时调用的方法的实现$this->get('main.service');

/**
 * Gets a service by id.
 *
 * @param string $id The service id
 *
 * @return object The service
 */
public function get($id)
{
    return $this->container->get($id);
}
Run Code Online (Sandbox Code Playgroud)