2010-05-14 73 views
4

我试图用array_walk_recursive的东西,并且想使用的类的方法,如打电话回去一个,所以想:其PHP:使用方法作为回调

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

和变化都失败了。我最终定居:

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

其工作原理,但我在这里阅读,在一个静态的方式这样调用类的方法通常被认为是不良的做法。或者这是必要的情况之一?

所以,这是正确的方式去做,或者有没有办法把回调函数,而不必回头使用它作为静态类方法?

回答

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

我知道这个线程是旧的,但通过阅读你的话“调用类方法以静态的方式是这样通常被认为是穷人的做法”我不得不说,用于当静态函数是一个很好的做法正确的任务。像Laravel和Symphony这样的框架展示了静态方法的真正潜力。

无论如何,当您不害怕使用静态方法时,您可以使用self来调用您的方法,而不是指定可能在开发过程中更改的类名称。

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