作用域分辨

作用域分辨運算符(::)
注意
下列內容僅在php4及以後版本中有效。
有時,在沒有聲明任何實例的情況下訪問類中的函式或者基類中的函式和變數很有用處。而::運算符即用於此情況。
<?php
classA{
functionexample(){
echo"IamtheoriginalfunctionA::example().<br/>/n";
}
}
classBextendsA{
functionexample(){
echo"IamtheredefinedfunctionB::example().<br/>/n";
A::example();
}
}
//A類沒有對象,這將輸出
//IamtheoriginalfunctionA::example().<br/>
A::example();
//建立一個B類的對象
$b=newB;
//這將輸出
//IamtheredefinedfunctionB::example().<br/>
//IamtheoriginalfunctionA::example().<br/>
$b->example();
?>上面的例子調用了A類的函式example(),但是這裡並不存在A類的對象,因此不能這樣用$a->example()或者類似的方法調用example()。反而我們將example()作為一個類函數來調用,也就是說,作為一個類自身的函式來調用,而不是這個類的任何對象。
這裡有類函式,但沒有類的變數。實際上,在調用函式時完全沒有任何對象。因而一個類的函式可以不使用任何對象(但可以使用局部或者全局變數),並且可以根本不使用$this變數。
上面的例子中,類B重新定義了函式example()。A類中原始定義的函式example()將被禁止並且不再生效,除非使用::運算符來訪問A類中的example()函式。如:A::example()(實際上,應該寫為parent::example(),下一章介紹該內容)。
就此而論,對於當前對象,它可能有對象變數。因此可以在對象函式的內部使用$this和對象變數。

相關詞條

熱門詞條

聯絡我們