1

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

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

$this->container->get('main.service');

或者

$this->get('main.service');

没有区别。

我得到同样的服务

差异在哪里?

4

1 回答 1

7

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

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);
}
于 2014-02-13T15:30:16.100 回答