从PHP匿名函数访问变量

时间:2013-03-06 13:32:52

标签: php anonymous-function

我有以下带有静态变量的类。如何从匿名PHP函数中访问类的静态函数?

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

  private static function MyFunction2(someobject){
  }
}

我无法从匿名类中访问函数“MyFunction2”。你能否就如何纠正这个问题提出建议?

2 个答案:

答案 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){
  }
}