2013-03-06 168 views
2

我有以下類與靜態變量。我如何從匿名PHP函數中訪問類的靜態函數?從PHP匿名函數訪問變量

class MyClass { 
    public static function MyFunction(mylocalparam){ 
     MyStaticClass:MyStaticMethod(function(myparam) use(mylocalparam){ 
     MyClass::MyFunction2(mylocalparam); 
    }); 
    } 

    private static function MyFunction2(someobject){ 
    } 
} 

我無法從匿名類中訪問函數「MyFunction2」。你能請教如何糾正這個問題嗎?

回答

3

不會發生。您需要製作靜態功能public。匿名函數不在MyClass的範圍內運行,因此無法訪問其中包含的方法private

1

靜是不可能的,但如果你想你可以把你想通過參數來調用作爲callback類型的方法。

如果你改變了整個班級是一個實例類(刪除所有static關鍵字),那麼你可以使用$this匿名函數中調用你在類的任何方法。

從PHP手冊:

閉包也可以繼承父範圍的變量。

按規定:

在5.4.0版本$這可以在匿名函數中使用。

class MyClass { 
    public function MyFunction($mylocalparam){ 
     MyStaticClass:MyStaticMethod(function($myparam) use($mylocalparam){ 
     $this->MyFunction2($mylocalparam); 
    }); 
    } 

    private function MyFunction2($someobject){ 
    } 
}