首頁 > 後端開發 > php教程 > PHP 中 new static 和 new self 的差異

PHP 中 new static 和 new self 的差異

WBOY
發布: 2016-08-08 09:19:53
原創
886 人瀏覽過

        今天老闆在公司 問了一下  new static  與 new self 的差異 公司十個程序 竟然沒有一個回答上來 後面畫面自補 。 。 。

本屌絲回家後就百度了解了下這二者區別:

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

 static::

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

簡單通俗的來說, self就是寫在哪個類裡面, 實際調用的就是這個類.所謂的後期靜態綁定, static代表使用的這個類, 就是你在父類裡寫的static,

然後透過子類別直接/間接用到了這個static, 這個static指的就是這個子類別, 所以說static和$this很像, 但是static可以用於靜態方法和屬性等.

請看列子

 

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

    </span><span>public</span><span>static</span><span>function</span><span> callstatic()
    {
        </span><span>static</span>::<span>name();
    }
}

</span><span>class</span> Man <span>extends</span><span> Person
{
    </span><span>public</span><span>static</span><span>function</span><span> name()
    {
        </span><span>echo</span> "gaojin"<span>;
    }
}
Man</span>::name();  <span>//</span><span> output: gaojin</span>Person::callself();  <span>//</span><span> output: xiaosan</span>Person::callstatic();  <span>//</span><span> output:gaojin</span>?>
登入後複製

  小編繼續學習中 

以上就介紹了PHP 中 new static 和 new self 的區別,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板