标题可能有点令人困惑,所以让我解释一下。我有一个班级和一个方法。那个方法本身就有一个功能。像这样:
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');
}
}
答案 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
};
}