2014-06-05 63 views
0

如何從這個匿名函數中調用doSomethingElse函數?PHP從匿名函數中調用類函數

如果我嘗試$這個 - > doSomethingElse()我得到「使用$這個時候不是在對象上下文」錯誤

class MyController extends AppController { 

    public function doSomethingElse() 
    { 
     //do something 
    } 


    public function doSomething() 
    { 
     $this->Crud->on('afterSave', function(CakeEvent $event) { 
      if ($event->subject->success) { 

        //how do I call 'doSomethingElse' from here 

      } 
     }); 
    } 
} 
+0

更多關於匿名函數這不是有效的代碼,目前還不清楚,你問究竟。 – deceze

+0

抱歉,不正確地複製了代碼 – wot

+0

您使用的是哪個版本的PHP? – deceze

回答

3

作個參考您MyController您的匿名功能之外,它這個像

class MyController extends AppController { 

    public function doSomethingElse() 
    { 
     //do something 
    } 


    public function doSomething() 
    { 
     $reference = $this; 

     $this->Crud->on('afterSave', function(CakeEvent $event) use ($reference) { 
      if ($event->subject->success) { 

        //how do I call 'doSomethingElse' from here 
        $reference->doSomethingElse(); 

      } 
     }); 
    } 
} 

PHP5.4之後$this可以用於匿名函數而不是傳遞給use (...)作爲參考。

學習php site