2010-05-14 47 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'); 
相關問題