閱讀722 返回首頁    go 阿裏雲 go 技術社區[雲棲]


PHP中static和self的區別

本來轉載自:https://yq.aliyun.com/articles/www.ttkmwl.com  --最有特色的程序代碼下載論壇-通天源碼論壇

db94ca171ab2394b64937063bbe61997e11f795b

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

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

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

簡單通俗的來說,

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

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

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

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

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

Man::callself();  // output: 111
Man::callstatic();  // output: 222
?>

最後更新:2017-06-27 16:31:58

  上一篇:go  你點一次廣告,會創造多少價值?|KDD論文核心算法獨家解讀
  下一篇:go  為什麼要使用 Apache Stratos 【已翻譯100%】