91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

php父類中訪問子類的靜態屬性

發布時間:2020-03-31 07:58:43 來源:網絡 閱讀:912 作者:zcfortest 欄目:web開發

在類中,我們可以通過self訪問本類或父類中的靜態屬性/靜態方法,可以通過parent訪問父類中的靜態屬性/靜態方法。

可我們卻沒有關鍵字從父類中的方法訪問子類的靜態屬性,這是由于父類是先于子類創建的,所以從邏輯上來講從父類中訪問子類的靜態屬性并不是一個好的選擇。

但有些時候我們不得不這樣做,那么我們可以通過get_class()方法實現:

get_class()返回的是本對象名,

get_class(obj)返回的是對象obj的名,

看下面這個例子:

<?php
class A
{
   function getName()
   {
       echo get_class();
       echo get_class($this);
   }
}

class B extends A
{
    
}

$a = new A();
$b = new B();
$a->getName();
$b->getName();

結果:AAAB

---------------------------------------------------------------

有了子類對象名,在利用eval()方法,我們就可以實現在父類方法中訪問子類靜態屬性了:

<?php
class A
{
   function getName()
   {
       $class = get_class($this);
       eval('$name='.$class.'::$name;');
       echo $name;
   }
}

class B extends A
{
    public static $name = 'B';
}

class C extends A
{
    public static $name = 'C';
}

$b = new B();
$c = new C();
$b->getName();
$c->getName();

結果:BC

----------------------------------

如果父類中使用的是靜態方法,不能使用$this,那么是不是就沒辦法了呢?

當然不是!

將A類改成如下

便可兼容靜態方法調用 

<?php
class A
{
   static function getName()
   {
       $class = get_called_class();
       eval('$name='.$class.'::$name;');
       echo $name;
   }
}

class B extends A
{
    public static $name = 'B';
}

class C extends A
{
    public static $name = 'C';
}

B::getName();
c::getName();

結果BC

向AI問一下細節

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

AI

那曲县| 齐齐哈尔市| 巴马| 观塘区| 图木舒克市| 克东县| 通化县| 武城县| 阜新市| 文山县| 武汉市| 屯留县| 邵阳市| 潞城市| 武夷山市| 牙克石市| 安宁市| 平邑县| 那曲县| 玉龙| 东阳市| 达州市| 紫阳县| 宝清县| 安徽省| 铁岭县| 漠河县| 鄂托克前旗| 浦北县| 南充市| 武汉市| 莱阳市| 武义县| 文成县| 汉沽区| 安岳县| 兰考县| 柏乡县| 荥经县| 嘉兴市| 丘北县|