2

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

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

  private static function MyFunction2(someobject){
  }
}

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

4

2 回答 2

3

不会发生。您需要制作静态功能public。匿名函数不在 的范围内运行MyClass,因此无法访问private其中包含的方法。

于 2013-03-06T13:34:44.397 回答
1

静态是不可能的,但如果你愿意,你可以通过 type 的参数传递你想调用的方法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){
  }
}
于 2013-03-06T13:38:33.853 回答