2009-10-30 146 views
2

有沒有人知道我是否被靜態調用(Classname :: function)或在PHP方法內的對象($ classInstance-> function)內部的方式嗎?如何判斷我是靜態對象還是對象?

+1

這就是static關鍵字的用處。如果你將兩者混合起來,你應該會收到警告。 – 2009-10-30 02:50:09

+0

靜態函數不應該被非靜態調用,並且不應該靜態調用非靜態方法。 PHP中的另一件事情應該會產生一個致命的錯誤,但不會。 – 2009-10-30 03:25:12

+0

在這種情況下,我不得不迅速修復一個錯誤,以便上牀睡覺:)但是你說得對,當然。 – 2009-10-30 04:01:11

回答

9

誠然不是隨便......但肖恩科茨有cool and fairly simple approach to finding this out

$isStatic = !(isset($this) && get_class($this) == __CLASS__); 
+0

這樣做,歡呼! – 2009-10-30 03:59:25

+1

該博客文章的URL現在是http://seancoates.com/blogs/schizophrenic-methods – joachim 2014-01-02 17:20:38

+1

@joachim謝謝 - 更新! – 2014-01-02 22:55:37

1

檢查$this設置和等於類。對於靜態調用,實例調用和不等於(或空)將相同。

+0

這實際上並不正確。在接受的答案中查看我鏈接的博客文章。如果一個方法被靜態調用,那麼'$ this'可以被設置,它甚至可能不屬於包含的類。 – scoates 2012-12-10 17:21:35

相關問題