亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

屏边| 东方市| 荆州市| 定结县| 罗田县| 赣榆县| 翁牛特旗| 海城市| 哈巴河县| 阿坝县| 北宁市| 剑河县| 庆安县| 谢通门县| 南京市| 喀喇| 佳木斯市| 自治县| 图片| 合肥市| 内江市| 巴南区| 拉孜县| 宽甸| 阿合奇县| 元阳县| 白朗县| 若尔盖县| 西平县| 咸丰县| 通河县| 安吉县| 肃南| 格尔木市| 察雅县| 衡阳县| 泾源县| 星子县| 通海县| 黎城县| 长寿区|