我有以下带有静态变量的类。如何从匿名PHP函数中访问类的静态函数?
class MyClass {
public static function MyFunction(mylocalparam){
MyStaticClass:MyStaticMethod(function(myparam) use(mylocalparam){
MyClass::MyFunction2(mylocalparam);
});
}
private static function MyFunction2(someobject){
}
}
我无法从匿名类中访问函数“MyFunction2”。你能否就如何纠正这个问题提出建议?
答案 0 :(得分:3)
不会发生。您需要创建静态函数public
。匿名函数不在MyClass
范围内运行,因此无法访问其中包含的private
方法。
答案 1 :(得分:1)
静态是不可能的,但是如果你想要,你可以通过callback
类型的参数传递你想要调用的方法。
如果将整个类更改为实例类(删除所有static
个关键字),则可以使用匿名函数内的$this
来调用您所在类的任何方法。< / p>
从PHP手册:
闭包也可以从父作用域继承变量。
按照规定:
在版本5.4.0 $中,这可用于匿名函数。
class MyClass {
public function MyFunction($mylocalparam){
MyStaticClass:MyStaticMethod(function($myparam) use($mylocalparam){
$this->MyFunction2($mylocalparam);
});
}
private function MyFunction2($someobject){
}
}