self::class和static::class的區別

my38778570發表於2023-01-10

在 PHP 裡,在沒有繼承時候,你用self::class 和 static::class是一樣的,都是獲取當前類名。

但是如果用到了繼承,並且這個方法寫在了父類裡,你想要分別獲取當前父類名和未知的子類名,就要按照下面的方法進行獲取。

在 PHP 類中,self指向的是當前方法存在的這個類,也就是父類。static指向的是最終那個子類。

<?php
class P{
    public static function getParent(){
        return self::class;
    }
    public static function getChild(){
        return static::class;
    }
}
class C extends P{
}
echo c::getParent() ; // 輸出P
echo c::getChild();    //輸出C
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章