<?phpclass A { function example() { echo "I am the original function A::example().<br />/n"; }}class B extends A { function example() { echo "I am the redefined function B::example().<br />/n"; A::example(); }}// A 類沒有對象,這將輸出// I am the original function A::example().<br />A::example();// 建立一個 B 類的對象$b = new B;// 這將輸出// I am the redefined function B::example().<br />// I am the original function A::example().<br />$b->example();?>
上面的例子調用了 A 類的函式 example(),但是這裡並不存在 A 類的對象,因此不能這樣用 $a->example() 或者類似的方法調用 example()。反而我們將 example() 作為一個類函式來調用,也就是說,作為一個類自身的函式來調用,而不是這個類的任何對象。
這裡有類函式,但沒有類的變數。實際上,在調用函式時完全沒有任何對象。因而一個類的函式可以不使用任何對象(但可以使用局部或者全局變數),並且可以根本不使用 $this 變數。
上面的例子中,類 B 重新定義了函式 example()。A 類中原始定義的函式 example() 將被禁止並且不再生效,除非使用 :: 運算符來訪問 A 類中的 example() 函式。如:A::example()(實際上,應該寫為 parent::example(),下一章介紹該內容)。
就此而論,對於當前對象,它可能有對象變數。因此可以在對象函式的內部使用 $this 和對象變數。