获得一系列功能的兄弟姐妹

时间:2014-03-17 19:18:06

标签: php

有没有办法在函数内部获取函数的兄弟函数?

我有一系列功能,类似于:

$thingy = [
  'do_something' => function() {
    // call $thingy['do_something_else']()?
  },

  'do_something_else' => function() {

    return 1234;
  }
];

我可以通过do_something_else致电do_something吗?在其他语言中,例如javascript,您应该可以使用this或使用变量名称thingy

2 个答案:

答案 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

Demo

答案 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 );

我个人倾向于尽可能使用对象。