2011-01-06 47 views
3

因此,我託管拒絕更新到PHP 5.3(這是惱人的,但在同一時間罰款;我很靈活),但唯一真正讓我關閉的是沒有__callStatic可用。PHP:__callStatic替代5.2.x

我有模塊加載,我想鞏固到一個類(即有一個類加載模塊,然後通過調用主類__callStatic方法訪問這些模塊的功能),但當我從本地測試服務器上傳到我的服務器,顯然__callStatic方法不起作用。

是否有替代方案是還是靜態?我喜歡乾淨的代碼尋找雙冒號(即registry::some_func())而不是$registry->some_func()

另一個不利的方面來這是我現在被迫使用職權範圍內global關鍵字(其中由我自己的偏好是非常,非常凌亂)。

代碼使用靜態方法代替非靜態方法的速度也非常快,並且反過來更加乾淨。

另外:我想過寫__callStatic方法像往常一樣與5.2,然後調用方法明確,例如registry::__callStatic("some_func"), array("val", "val2", "val3"),並保持事情變得更簡單這樣一來,即使是比較容易遷移,當他們升級到5.3 。關於這種方法的想法?

謝謝!

回答

1

如果想這樣做的唯一原因就是速度和雙冒號的主觀訴求,我會說長大欣賞劃線和括號之道,花了一大筆錢,並使用對象實例。你所說的「乾淨的代碼外觀」就像Hammer的褲子......一年很酷,幾年後,當你年齡更大,更聰明時,也不會那麼酷。 __callStatic()(IMVHO)充其量只是一種不必要的輕微便利,並且是對糟糕的班級設計的一種解決方法。 :)

+0

非常明智地說:]我同意這一點,這幾乎是我自己的規格。如果需要的話,我總是可以使用一些小小的magic linux命令來替換整個代碼(只需要移除`$`並用`::`替換` - >`。謝謝! – Qix 2011-01-06 22:48:02