溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中static和self調用靜態方法區別

發布時間:2020-08-16 02:02:28 來源:網絡 閱讀:7597 作者:china_lx1 欄目:開發技術

由于看到框架里面經常使用static::method() 于是稍微了解下static和self的區別

廢話少說,直接上代碼

class Father
{
	public function __construct()
	{
		$this->init();
		
		self::test();
	}

	public static function test()
	{
		echo "father test....<br>";
	}

	public function init()
	{
		echo 'father init...<br>';
	}
}

class Son extends Father
{
	public function init()
	{
		echo 'son init..<br>';
	}

	public static function test()
	{
		echo "son test..<br>";
	}
}

$son_obj = new Son();


顯示結果:

son init..
father test....


分析結果看,調用init非靜態方法已經被子類覆蓋了,但使用self調用靜態方法還是使用的是父類的test靜態方法

于是我們將代碼修改成static

class Father
{
	public function __construct()
	{
		$this->init();
		
		static::test();
	}

	public static function test()
	{
		echo "father test....<br>";
	}

	public function init()
	{
		echo 'father init...<br>';
	}
}

class Son extends Father
{
	public function init()
	{
		echo 'son init..<br>';
	}

	public static function test()
	{
		echo "son test..<br>";
	}
}

$son_obj = new Son();


出現的結果是:

son init..
son test..


使用static調用靜態方法使用了當前分類的靜態方法

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女