2014-02-13 65 views
1

我剛在Symfony2中實現了我的第一個服務Symfony2獲得服務或獲得集裝箱服務

我注意到,控制器方法中,i是否調用服務所以

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

左右

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

沒有差別。

我同樣得到服務

差異在哪裏?

回答

7

如果您擴展Symfony提供的Base Controller,則沒有區別。

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class YourController extends Controller 

如果你把在Symfony\Bundle\FrameworkBundle\Controller\Controller執行情況的深入瞭解,您可能會注意到它提供了一個get()幫助其做同樣的電話,你做的第一件事(獲得通過容器爲您服務)。

這樣,那麼,

有沒有差別$this->get('something')只是sencapsulates到$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); 
}