【问题标题】: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){
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2020-08-19
        • 2013-02-09
        • 1970-01-01
        • 1970-01-01
        • 2014-04-09
        • 1970-01-01
        • 2013-08-16
        • 1970-01-01
        相关资源
        最近更新 更多