2012-10-28 34 views

回答

0

你不應該混合staticnon-static方法同時調用它們,但如果存在$this,你可以檢查你的方法。

$staticcalled = isset($this); 
+3

+1,但是甚至不應該有一種方法來檢查它。就像你說的,不要混合靜態和非靜態。這是一個恥辱PHP甚至允許它。 – GolezTrol

+0

@GolezTrol:不是。 'function foo($ bar){$ bar-> Baz(); }'如果我知道在任何'$ bar'中有一個靜態的'Baz',我就可以使用它。否則,我必須知道具體的類型,打破鴨子打字。 –

+0

「混合」靜態和非靜態方法不一定表示設計不好;它可能只是解決PHP的噩夢般的堅持,即你不能像靜態和非靜態一樣調用相同的方法(實際上使用'E_STRICT'),同時也不能讓_兩個獨立的方法_具有相同的名稱,一個是靜態的另一個是非靜態的。 – lanzz

相關問題