2013-03-24 52 views
3

我有一個通用的PHP類,我用它來包含我在多個Symfony控制器中使用的函數/方法。爲了使用該實體管理器,我通過它,像這樣:將doctrine實體管理器作爲參數傳遞給泛型類

class MyController extends Controller 
{ 
    public function indexAction() 
    { 
    $em = $this->getDoctrine()->getManager(); 
    $dbf = new DBFunctions($em); 
    $result = $dbf->doSomething(); 
    } 
} 

我的泛型類看起來是這樣的:

class DBFunctions 
{ 
    private $em; 
    public function __construct($em1) 
    { 
    $em = $em1; 
    var_dump($em1); 
    } 

    public function doSomething(){ 
     $query = $em->createQuery(<my query>); 
     return $query->getResult(); 
    } 
} 

問題是,當我跑我得到以下錯誤的函數:

Call to a member function createQuery() on a non-object 

但我的var_dump表明這種情況(一噸):

object(EntityManager514e73398155c_546a8d27f194334ee012bfe64f629947b07e4919\__CG__\Doctrine\ORM\EntityManager)[236] 
private 'delegate' => 
object(Doctrine\ORM\EntityManager)[231] 

我確定它是一個對象,所以我迷失在做什麼。

感謝您的幫助!

回答

1

問題是你不能讓一個變量從一種方法傳遞到另一種方法。如果您在doSomething()方法中執行var_dump($em),則會看到它返回NULL。將它作爲參數傳遞給該方法,或者在構造函數中設置$this->em

+0

非常感謝!有效! – 2013-03-24 05:47:23

相關問題