PHP 中 static 和 self 的區別


使用 self:: 或者 __CLASS__ 對當前類的靜態引用,取決於定義當前方法所在的類:

使用 static:: 不再被解析為定義當前方法所在的類,而是在實際運行時計算的。也可以稱之為“靜態綁定”,因為它可以用於(但不限於)靜態方法的調用。

靜態綁定是PHP 5.3.0,增加的一個功能 用於在繼承范圍內引用靜態調用的類

 

簡單通俗的來說,

self就是寫在哪個類里面, 實際調用的就是這個類.

static代表使用的這個類, 就是你在父類里寫的static,然后被子類覆蓋,使用的就是子類的方法或屬性

請看列子

<?php
class Person
{
    public static function name()
    {
        echo "xiaosan";
        echo "<br />";
    }
    public static function callself()
    {
        self::name();
    }

    public static function callstatic()
    {
        static::name();
    }
}

class Man extends Person
{
    public static function name()
    {
        echo "gaojin";
        echo "<br />";
    }
}

Man::callself();  // output: xiaosan
Man::callstatic();  // output: gaojin
?>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM