我试图使用array_walk_recursive
来做某些事情,并希望使用其中一个类'方法作为回调,所以尝试:
array_walk_recursive($TAINTED, "$this->encode()");
及其变化都失败了。我最终安顿下来:
array_walk_recursive($TAINTED, 'className::encode');
有效,但我在这里读到,以这种静态方式调用类方法通常被认为是不好的做法。或者这是否是必要的情况之一?
那么,这是正确的方法吗,还是有办法放入回调函数而不必依赖它作为静态类方法?
答案 0 :(得分:12)
array_walk_recursive($TAINTED, array($this, 'encode'));
答案 1 :(得分:1)
我知道这个帖子比较老但是通过阅读你的单词"以静态方式调用类方法通常被认为是不好的做法" 我不得不说静态函数是用于正确任务的良好做法。像Laravel和Symphony这样的框架展示了静态方法的真正潜力。
无论如何,如果您不担心使用静态方法,可以使用 self 调用方法,而不是指定在开发过程中可能会更改的类名。
array_walk_recursive($TAINTED, 'self::encode');