首頁  >  文章  >  後端開發  >  php的範圍解析運算子(::)的使用分析說明

php的範圍解析運算子(::)的使用分析說明

黄舟
黄舟原創
2017-07-02 11:39:531073瀏覽

今天看到幾個有關PHP的符號。一個是@,這個加在一個變數的前面,是為了抑制PHP解釋器報錯,也就是說即使出了錯也不會顯示出來。

今天看到幾個有關PHP的符號。一個是@,這個加在一個變數的前面,是為了抑制PHP解釋器報錯,也就是說即使出了錯也不會顯示出來。
還有一個更重要的符號PHP的範圍解析操作符(::)
在沒有宣告任何實例的情況下存取類別中的函數或基類別中的函數和變數很有用處。而 :: 運算子即用於此情況。

<?php 
class 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 和物件變數。

以上是php的範圍解析運算子(::)的使用分析說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn