靜態(tài)成員在PHP中是如何繼承的

本篇內容主要講解“靜態(tài)成員在PHP中是如何繼承的”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“靜態(tài)成員在PHP中是如何繼承的”吧!

茶陵網站建設公司創(chuàng)新互聯(lián)公司,茶陵網站設計制作,有大型網站制作公司豐富經驗。已為茶陵近千家提供企業(yè)網站建設服務。企業(yè)網站搭建\外貿網站建設要多少錢,請找那個售后服務好的茶陵做網站的公司定做!

 

靜態(tài)成員在PHP中是怎么繼承的?

靜態(tài)成員,也就是用static修飾的變量或者方法,如果搞不清楚它們實現(xiàn)的原理,就很容易會出現(xiàn)一些錯誤。這次我們來研究的是在繼承中靜態(tài)成員的調用情況。首先來看這樣一段代碼:

class A
{
   static $a = 'This is A!';

   public function show()
   {
       echo self::$a, PHP_EOL;
       echo static::$a, PHP_EOL;
   }
}

class B extends A
{
   static $a = 'This is B!';

}

$b = new B;
$b->show();
 

之前的文章中,我們有說過self的問題。self僅僅只是指向當前這個類。注意,是類,不是實例化后的對象。所以上面的輸出結果是:

This is A!
This is B!
 

好了,有了這個基礎之后,我們知道靜態(tài)成員是和類有關的,和對象無關。那么以下的代碼也就更容易理解了。

class C
{
   static $c = 1;
   public $d = 1;
}
class D extends C
{
   public function add()
   {
       self::$c++;
       $this->d++;
   }
}

$d1 = new D();
$d2 = new D();

$d1->add();
echo 'c:' . D::$c . ',d:' . $d1->d . ';', PHP_EOL;

$d2->add();
echo 'c:' . D::$c . ',d:' . $d2->d . ';', PHP_EOL;
 

直接讀代碼能推導出輸出的結果嗎?其實只要掌握了上文中所說的原則,這段代碼就很容易理解了。$c是靜態(tài)變量,$d是普通變量。通過類實例的add()方法進行操作后,$c因為是和類有關,所以不管是哪個實例對象,操作它之后都會是共享的。而$d作為普通變量,它的作用域僅限制在當前這個實例對象中。因此,輸出的結果是:

c:2,d:2;
c:3,d:2;
 

最后,我們還是來復習一次self、parent和static關鍵字。

class E {
   public static function test(){
       echo "This is E test!";
   }
}

class F extends E{
   public static function t(){
       self::test();
       parent::test();
       static::test();
   }

   public static function test(){
       echo "This is F test!";
   }
}

F::t();
 

t()輸出的三個結果是什么呢?詳情可以查看之前的文章PHP中的Static

測試代碼:https://github.com/zhangyue0503/dev-blog/blob/master/php/201912/source/%E9%9D%99%E6%80%81%E6%88%90%E5%91%98%E5%9C%A8PHP%E4%B8%AD%E6%98%AF%E6%80%8E%E4%B9%88%E7%BB%A7%E6%89%BF%E7%9A%84%EF%BC%9F.php

參考文檔:https://www.php.net/manual/zh/language.oop5.static.php

到此,相信大家對“靜態(tài)成員在PHP中是如何繼承的”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

文章名稱:靜態(tài)成員在PHP中是如何繼承的
URL網址:http://bm7419.com/article48/jcshep.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、定制網站品牌網站設計、網站制作微信小程序、用戶體驗

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司