當前位置:學問君>人在職場>電腦培訓>

PHP的範圍解析操作符

學問君 人氣:2.08W

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

PHP的範圍解析操作符

還有一個更重要的符號PHP的範圍解析操作符(::)

在沒有聲明任何實例的情況下訪問類中的函數或者基類中的函數和變量很有用處。而 :: 運算符即用於此情況。

複製代碼 代碼如下:

<?php

class A {

function example() {

echo "I am the original function A::example().

n";

}

}

class B extends A {

function example() {

echo "I am the redefined function B::example().

n";

A::example();

}

}

// A 類沒有對象,這將輸出

// I am the original function A::example().

A::example();

// 建立一個 B 類的對象

$b = new B;

// 這將輸出

// I am the redefined function B::example().

// I am the original function A::example().

$b->example();

?>

上面的例子調用了 A 類的函數 example(),但是這裏並不存在 A 類的對象,因此不能這樣用 $a->example() 或者類似的方法調用 example()。反而我們將 example() 作爲一個類函數來調用,也就是說,作爲一個類自身的函數來調用,而不是這個類的任何對象。

這裏有類函數,但沒有類的'變量。實際上,在調用函數時完全沒有任何對象。因而一個類的函數可以不使用任何對象(但可以使用局部或者全局變量),並且可以根本不使用 $this 變量。

上面的例子中,類 B 重新定義了函數 example()。A 類中原始定義的函數 example() 將被屏蔽並且不再生效,除非使用 :: 運算符來訪問 A 類中的 example() 函數。如:A::example()(實際上,應該寫爲 parent::example(),下一章介紹該內容)。

就此而論,對於當前對象,它可能有對象變量。因此可以在對象函數的內部使用 $this 和對象變量。