首頁 >後端開發 >php教程 >php中self和static的區別詳解

php中self和static的區別詳解

小云云
小云云原創
2018-03-31 09:59:191758瀏覽

在php中self關鍵字能夠代表目前類,一般用於呼叫目前類別的靜態方法或靜態屬性。但是static除了能定義靜態此屬性之外,還有與self類似的功能(代表目前類別)。

但是兩者之間還是有一定的區別的,我們透過程式碼驗證:

<?php
header("Content-Type:text/html;charset=utf-8");
Class A{
	public static $p1=1;
	public $p2=2;
	public static function showInfo(){
		echo "<br/>".self::$p1;
	}
	public static function showInfo2(){
		echo "<br/>".static::$p1;
	}
}
Class B extends A{
	static $p1=10;//此处覆盖继承过来的变量p1.
	public $p2=20;
	
}
A::showInfo();
echo "<br/>";
B::showInfo();
echo "<hr/>";
A::showInfo2();
echo "<br/>";
B::showInfo2();

透過結果我們可以看出:

    當呼叫方法showInfo()時輸出物件為self::$p1。此時,儘管B類是繼承於A類,且在B類中呼叫繼承的方法,其顯示的永遠是self關鍵字所在的那一類。因此可以說:self表示的當前類別主要是當前代碼所在的類別。

    當呼叫方法showInfo2()時輸出物件為static::$p1。此時,輸出的結果不相同。 A類別中輸出自己呼叫的屬性。 B也輸出的是自己呼叫的屬性(繼承A類別中的方法後呼叫的$p2被覆寫的值)。因此:static代表的是呼叫目前方法所在的類別。

因此,雖然self和static都可以表示當前類,但是其代表的意義有所差別。 

相關推薦:

php物件導向中self與static的差異

#

以上是php中self和static的區別詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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