国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP new static 和 new self

Cristalven / 2396人閱讀

摘要:則上面的基礎上,更聰明一點點會返回執行的類,比如執行返回的是執行返回的是而在沒有繼承的情況下,可以認為和是返回相同的結果。

最近在一個視頻的評論被問到一個小問題:這里選擇用static 而不是self有特殊的考慮么?或者我們可以這樣轉換一下問題:

PHP 的 new static 和 new self 具體有什么?

視頻地址 https://www.codecasts.com/ser...

其實這個來看一個例子應該就很清晰了:

class Father {

    public static function getSelf() {
        return new self();
    }

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

class Son extends Father {}

echo get_class(Son::getSelf()); // Father
echo get_class(Son::getStatic()); // Son
echo get_class(Father::getSelf()); // Father
echo get_class(Father::getStatic()); // Father

這里面注意這一行 get_class(Son::getStatic()); 返回的是 Son 這個 class,可以總結如下:

new self

1.self 返回的是 new self 中關鍵字 new 所在的類中,比如這里例子的 :

public static function getSelf() {
        return new self(); // new 關鍵字在 Father 這里
    }

始終返回 Father

new static

2.static 則上面的基礎上,更聰明一點點:static 會返回執行 new static() 的類,比如 Son 執行 get_class(Son::getStatic()) 返回的是 Son, Father 執行 get_class(Father::getStatic()) 返回的是 Father

而在沒有繼承的情況下,可以認為 new selfnew static是返回相同的結果。

Tips: 可以用一個好的 IDE 來直接看注釋。比如 PhpStorm:

Happy Hacking

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22389.html

相關文章

  • PHP面向對象中new self( ) new static( ) 的區別

    摘要:首先闡明結論,在中指向定義了當前被調用方法的類,指向調用當前靜態方法的類。下面的例子更好的說明了和之間的差異后者使用了的后期靜態綁定指向調用方法的當前類 首先闡明結論,在PHP中 self指向定義了當前被調用方法的類, static指向調用當前靜態方法的類。 接下來通過一個例子來證明上面的結果 class A { public static $_a = Class A; ...

    missonce 評論0 收藏0
  • PHPself關鍵字

    摘要:有了的靜態延遲綁定功能,可以在運行時動態確定歸屬的類。與是被討論最多,也是最容易引起誤用的組合。的用途看完與上述三個關鍵字的區別,的用途是不是呼之即出一句話總結,那就是總是指向當前類及類實例。 轉載請注明文章出處:https://tlanyan.me/self-in-php/ PHP群里有人詢問self關鍵字的用法,答案是比較明顯的:靜態成員函數內不能用this調用非成員函數,但可以用...

    morgan 評論0 收藏0
  • php 設計模式之工廠模式、單例模式、注冊樹模式

    摘要:的設計模式有很多種,本文取最簡單的三種模式工廠模式單例模式和注冊樹模式進行簡單的講解。文件創建完后,咱們回到單元測試文件文件再執行一下單元測試命令發現,也能返回成功,這樣的話我們就能很方便的修改任何驅動了。 php 設計模式之工廠模式、單例模式、注冊樹模式 在軟件工程中,創建型設計模式承擔著對象創建的職責,嘗試創建適合程序上下文的對象,對象創建設計模式的產生是由于軟件工程設計的問題,具...

    liangzai_cool 評論0 收藏0
  • PHP靜態方法屬性、延遲靜態綁定

    摘要:靜態方法和屬性靜態方法是以類作為作用域的函數。靜態方法不能訪問這個類中的普通屬性,因為那些屬性屬于一個對象,但可以訪問靜態屬性。因此靜態方法和屬性又被稱為類變量和屬性,也就不能在靜態方法中使用偽變量。引入了延遲靜態綁定的概念。 靜態方法和屬性 靜態方法是以類作為作用域的函數。靜態方法不能訪問這個類中的普通屬性,因為那些屬性屬于一個對象,但可以訪問靜態屬性。如果修改了一個靜態屬性,那么這...

    rubyshen 評論0 收藏0
  • php.類與對象

    摘要:接口可以使用常量,叫接口常量,和類的常量使用方法相同類可以同時繼承多個接口使用接口常量抽象類不能被實例化。繼承抽象類,子類必須實現父類中所有的抽象方法。 訪問控制 屬性和方法的訪問控制(可見標識):public 任何地方private 類自身protected 類自身,自子類及自父類 this this 可以理解為這個類的一個實例 self self 代表類本身 __construc...

    scq000 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<