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

Php 在嵌套函数内的静态方法中使用变量,php,global-variables,Php,Global Variables,标题可能有点混乱,让我解释一下。我有一个类和一个方法。这个方法本身有一个功能。像这样: class MyClass { public static function my_function($param) { function nested_function() { //do something with $param } } } 因此,我的问题是,如何在嵌套函数中访问$param 编辑 我这么做的原因是因为wordpress的事情。我需要这

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

class MyClass {
   public static function my_function($param) {
      function nested_function() {
        //do something with $param
      }
   }
}
因此,我的问题是,如何在
嵌套函数
中访问
$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_函数之前,不能调用
nested_函数
。之后不能再次调用
MyClass::my_函数
,因为PHP将尝试重新声明现有函数

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

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

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

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

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

函数嵌套函数($param)使用($param){//code here}
@N.B.不适用于命名全局函数。
函数嵌套函数($param)使用($param){//code here}
@N.B.不适用于命名全局函数。您好!谢谢你,我这么做的原因是因为我在做wordpress的事情。我需要使用add_操作。我将更新我的问题。Wordpress似乎有一个可怕的惯例,不允许对象或匿名函数作为回调函数。如果类方法有效,您可以尝试,例如,
'MyClass::some_callback'
,然后您可以通过类属性传递变量。否则,似乎只有
global
可以帮助您(不寒而栗)。好吧,匿名函数确实有效!非常感谢。但有一个问题是,从哪个php版本开始,这将起作用?PHP5.3.Hi中引入的匿名函数!谢谢你,我这么做的原因是因为我在做wordpress的事情。我需要使用add_操作。我将更新我的问题。Wordpress似乎有一个可怕的惯例,不允许对象或匿名函数作为回调函数。如果类方法有效,您可以尝试,例如,
'MyClass::some_callback'
,然后您可以通过类属性传递变量。否则,似乎只有
global
可以帮助您(不寒而栗)。好吧,匿名函数确实有效!非常感谢。不过,有一个问题是,从哪个php版本来看,这会起作用?PHP5.3中引入的匿名函数。