我刚刚在Symfony2中实现了我的第一个服务。
我注意到,在控制器方法中,我是否调用了服务
$this->container->get('main.service');
左右
$this->get('main.service');
没有区别。
我同时获得服务。
差异在哪里?
答案 0 :(得分:7)
如果您延长Symfony提供的Base Controller,则没有区别。
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class YourController extends Controller
如果您深入了解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);
}