PHP:使用方法作为回调

时间:2010-05-14 23:15:31

标签: php oop

我试图使用array_walk_recursive来做某些事情,并希望使用其中一个类'方法作为回调,所以尝试:

  array_walk_recursive($TAINTED, "$this->encode()");

及其变化都失败了。我最终安顿下来:

array_walk_recursive($TAINTED, 'className::encode');

有效,但我在这里读到,以这种静态方式调用类方法通常被认为是不好的做法。或者这是否是必要的情况之一?

那么,这是正确的方法吗,还是有办法放入回调函数而不必依赖它作为静态类方法?

2 个答案:

答案 0 :(得分:12)

array_walk_recursive($TAINTED, array($this, 'encode'));

答案 1 :(得分:1)

我知道这个帖子比较老但是通过阅读你的单词"以静态方式调用类方法通常被认为是不好的做法" 我不得不说静态函数是用于正确任务的良好做法。像Laravel和Symphony这样的框架展示了静态方法的真正潜力。

无论如何,如果您不担心使用静态方法,可以使用 self 调用方法,而不是指定在开发过程中可能会更改的类名。

array_walk_recursive($TAINTED, 'self::encode');