【问题标题】:Accessing the variables from a PHP Anonymous Function从 PHP 匿名函数访问变量
【发布时间】:2013-03-06 13:32:52
【问题描述】:
我有以下带有静态变量的类。如何从匿名 PHP 函数中访问类的静态函数?
class MyClass {
public static function MyFunction(mylocalparam){
MyStaticClass:MyStaticMethod(function(myparam) use(mylocalparam){
MyClass::MyFunction2(mylocalparam);
});
}
private static function MyFunction2(someobject){
}
}
我无法从匿名类中访问函数“MyFunction2”。您能否就如何纠正这个问题提出建议?
【问题讨论】:
标签:
php
anonymous-function
【解决方案1】:
不会发生。您需要制作静态函数public。匿名函数不在MyClass 的范围内运行,因此无法访问其中包含的private 方法。
【解决方案2】:
静态是不可能的,但如果你愿意,你可以通过callback 类型的参数传递你想调用的方法。
如果您将整个类更改为实例类(删除所有static 关键字),那么您可以在匿名函数中使用$this 来调用您所在类的任何方法。
来自 PHP 手册:
闭包也可以从父作用域继承变量。
如指定:
在 5.4.0 版本中,$this 可用于匿名函数。
class MyClass {
public function MyFunction($mylocalparam){
MyStaticClass:MyStaticMethod(function($myparam) use($mylocalparam){
$this->MyFunction2($mylocalparam);
});
}
private function MyFunction2($someobject){
}
}