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

时间:2012-09-12 13:03:55

标签: php global-variables

标题可能有点令人困惑,所以让我解释一下。我有一个班级和一个方法。那个方法本身就有一个功能。像这样:

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

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

修改

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

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

      add_action('init', 'nested_function');
   }
}

1 个答案:

答案 0 :(得分:4)

这不是一件明智的事。 PHP中的所有命名函数都是全局的。将它们嵌入其他内容只会使它们的声明成为条件。即在致电nested_function之前,您无法致电MyClass::my_function。然后你不能再次调用MyClass::my_function,因为PHP将尝试重新声明现有函数。

也许你想要一个闭包,即一个匿名函数,它可以包含来自父作用域的变量:

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