有没有办法在函数内部获取函数的兄弟函数?
我有一系列功能,类似于:
$thingy = [
'do_something' => function() {
// call $thingy['do_something_else']()?
},
'do_something_else' => function() {
return 1234;
}
];
我可以通过do_something_else
致电do_something
吗?在其他语言中,例如javascript,您应该可以使用this
或使用变量名称thingy
。
答案 0 :(得分:6)
是。您可以通过引用传递$thingy
来实现此目的:
$thingy = [
'do_something' => function() use (&$thingy) {
echo $thingy['do_something_else'](); // just an example
},
'do_something_else' => function() {
return 1234;
}
];
使用示例:
$thingy['do_something']();
输出:
1234
答案 1 :(得分:1)
进行了一些挖掘,是否愿意使用对象而不是数组。你可以使用这个小的PHP脚本找到:
https://gist.github.com/Mihailoff/3700483
查看与您类似的问题:
Creating anonymous objects in php
它允许您创建AnObj()
,然后允许您在创建匿名函数时保持OOP方法。
使用上面链接的php文件,你可以这样做。
$thingy = new AnObj(array(
'do_something' => function(){
echo 'do_something';
},
'do_something_else' => function( $thingy ){
$thingy->do_something();
echo 'do_something_else';
}
));
$thingy->do_something_else( $thingy );
我个人倾向于尽可能使用对象。