PHP的範圍解析操作符(::)的含義分析說明

來源:互聯網
上載者:User

今天看到幾個有關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 和物件變數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.