中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

new static()與new self() 在PHP中有什么區別

發布時間:2021-01-15 17:03:27 來源:億速云 閱讀:148 作者:Leah 欄目:開發技術

new static()與new self() 在PHP中有什么區別?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

 代碼如下:


return new static($val);


這尼瑪是神馬,只見過

復制代碼 代碼如下:


return new self($val);


于是上網查了下,他們兩個的區別。

self – 就是這個類,是代碼段里面的這個類。

static – PHP 5.3加進來的只得是當前這個類,有點像$this的意思,從堆內存中提取出來,訪問的是當前實例化的那個類,那么 static 代表的就是那個類。

還是看看老外的專業解釋吧。

self refers to the same class whose method the new operation takes place in.

static in PHP 5.3's late static bindings refers to whatever class in the hierarchy which you call the method on.

In the following example, B inherits both methods from A. self is bound to A because it's defined in A‘s implementation of the first method, whereas static is bound to the called class (also see  get_called_class() ).

復制代碼 代碼如下:


class A {
    public static function get_self() {
        return new self();
    }

    public static function get_static() {
        return new static();
    }
}

class B extends A {}

echo get_class(B::get_self());  // A
echo get_class(B::get_static()); // B
echo get_class(A::get_static()); // A

這個例子基本上一看就懂了吧。

原理了解了,但是問題還沒有解決,如何解決掉 return new static($val); 這個問題呢?

其實也簡單就是用 get_class($this); 如下

復制代碼 代碼如下:


class A {
    public function create1() {
        $class = get_class($this);
    return new $class();
    }
    public function create2() {
        return new static();
    }
}

class B extends A {

}

$b = new B();
var_dump(get_class($b->create1()), get_class($b->create2()));

/*
The result
string(1) "B"
string(1) "B"
*/

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

孟村| 曲麻莱县| 金寨县| 墨脱县| 茶陵县| 和田县| 屯昌县| 江口县| 阜宁县| 保康县| 辽宁省| 田林县| 噶尔县| 阿尔山市| 蓝山县| 柯坪县| 湘潭县| 连州市| 甘泉县| 青龙| 咸阳市| 广河县| 景泰县| 托里县| 比如县| 金沙县| 烟台市| 潞城市| 乌兰县| 镇赉县| 定南县| 甘德县| 绵阳市| 遂昌县| 巴楚县| 凤台县| 江孜县| 手机| 大田县| 桃江县| 清镇市|