PHP 中 new static 和 new self 的區別


        今天老大在公司 問了一下  new static  和 new self 的區別 公司十個程序 竟然沒有一個回答上來 后面畫面自補 。。。

 

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

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

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

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

 

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

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

請看列子

 

 

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

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

class Man extends Person
{
    public static function name()
    {
        echo "gaojin";
    }
}
Man::name();  // output: gaojin
Person::callself();  // output: xiaosan
Person::callstatic();  // output:xiaosan(子類調用 你懂的)
?>

 

  小編繼續學習中 

 


免責聲明!

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



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