标题可能有点令人困惑,所以让我来解释一下。我有一个类和一个方法。这种方法本身就有作用。像这样:
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
};
}