可能重複:
How to tell whether I’m static or an object?
How can I tell if a function is being called statically in PHP?你怎麼知道PHP中的調用方法類型?
如果調用該方法以這種方式class::method()
或以這種方式 $class->method()
我怎麼知道哪條路被調用的方法在我的意思同樣的方法?
可能重複:
How to tell whether I’m static or an object?
How can I tell if a function is being called statically in PHP?你怎麼知道PHP中的調用方法類型?
如果調用該方法以這種方式class::method()
或以這種方式 $class->method()
我怎麼知道哪條路被調用的方法在我的意思同樣的方法?
你不應該混合static
與non-static
方法同時調用它們,但如果存在$this
,你可以檢查你的方法。
$staticcalled = isset($this);
+1,但是甚至不應該有一種方法來檢查它。就像你說的,不要混合靜態和非靜態。這是一個恥辱PHP甚至允許它。 – GolezTrol
@GolezTrol:不是。 'function foo($ bar){$ bar-> Baz(); }'如果我知道在任何'$ bar'中有一個靜態的'Baz',我就可以使用它。否則,我必須知道具體的類型,打破鴨子打字。 –
「混合」靜態和非靜態方法不一定表示設計不好;它可能只是解決PHP的噩夢般的堅持,即你不能像靜態和非靜態一樣調用相同的方法(實際上使用'E_STRICT'),同時也不能讓_兩個獨立的方法_具有相同的名稱,一個是靜態的另一個是非靜態的。 – lanzz
嘿,很好找到球員。我將這兩個更新的化身標記爲最舊化身的副本。 –