首頁 >後端開發 >PHP問題 >php中的self代表目前類,那又該如何取得存取類別的資料呢?

php中的self代表目前類,那又該如何取得存取類別的資料呢?

autoload
autoload原創
2021-03-12 15:03:251502瀏覽

self是一種靜態綁定,換言之就是當類別進行編譯的時候self已經明確綁定了類別名,因此不論多少繼承 ,也不管是子類別還是父類別自己來進行訪問,self代表都是目前類別。如果想要選擇性的來支援來訪者,就需要使用靜態延遲綁定.

    定義:靜態延遲綁定,即在類別內用來代表類別本身的關鍵字部分不是在類別編譯時固定好,而是當方法被存取時動態的選擇來訪者所屬的類別。 靜態延遲綁定就是利用static關鍵字取代靜態綁定self,靜態延遲綁定需要使用到靜態成員的重寫。

    1.靜態延遲綁定:使用static關鍵字取代self進行類別成員存取

<?php
//父类
class People{
    public static $name = &#39;People&#39;;
    public static function showName(){
        //静态绑定
        echo self::$name,&#39;<br/>&#39;;//self
        //静态延迟绑定
        echo static::$name,&#39;<br/>&#39;;
    }
}
//子类
class Man extends People{
    //重写父类静态属性
    public static $name = &#39;Man&#39;;    //静态属性因为存储在类内部,因此不会覆盖
}

//子类访问

echo Man::$name."<br>";//Man
Man::showName();//输出People和Man
?>

    2.靜態延遲綁定一定是透過繼承後的子類別來進行存取才有效果

//接上述代码
People::showName();//输出People People

推薦:php視訊教學

以上是php中的self代表目前類,那又該如何取得存取類別的資料呢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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