0

标题可能有点混乱,所以让我解释一下。我有一个类和一个方法。那个方法本身有一个功能。像这样:

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');
   }
}
4

1 回答 1

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
    };
}
于 2012-09-12T13:09:04.873 回答