在嵌套函数内的静态方法中使用变量


Use variable in static method inside nested function

标题可能有点令人困惑,所以让我来解释一下。我有一个类和一个方法。这种方法本身就有作用。像这样:

class MyClass {
   public static function my_function($param) {
      function nested_function() {
        //do something with $param
      }
   }
}

所以我的问题是,如何在nested_function中访问$param

编辑

我这么做的原因是因为一个wordpress的事情。我需要这样的东西:

class MyClass {
   public static function my_function($param) {
      function nested_function() {
        //do something with $param
      }
      add_action('init', 'nested_function');
   }
}

这样做是不明智的。PHP中的所有命名函数都是全局的。将它们嵌套在其他东西中只会使它们的声明成为有条件的。也就是说,在呼叫MyClass::my_function之前,您不能呼叫nested_function。之后,您不能再次调用MyClass::my_function,因为PHP将尝试重新声明现有函数。

也许您想要一个闭包,即匿名函数,它可以包括父作用域中的变量:

public static function my_function($param) {
    $nested_function = function () use ($param) {
        //do something with $param
    };
}