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

溫馨提示×

溫馨提示×

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

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

PHP中$this,self,static有什么區別

發布時間:2021-11-01 16:31:15 來源:億速云 閱讀:130 作者:iii 欄目:編程語言

這篇文章主要講解了“PHP中$this,self,static有什么區別”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP中$this,self,static有什么區別”吧!

學習時間

簡單地說,

$this 指向當前的對象實例,self 指向當前類。

換句話說:

$this->member 調用非靜態屬性/方法,self::number 調用靜態屬性/方法。

舉個栗子,比較直觀,說概念總是那么枯燥。

PHP中$this,self,static有什么區別

上面這個例子很明確地使用了靜態屬性,和動態屬性,在構造函數內調用。實例化時執行。

如果反過來用就出錯了,比如使用:

self::$non_static_member . ' ' . $this->static_member;

self 調用了非靜態屬性,而 $this 調用了靜態屬性,這是錯誤的用法。

下面使用含有 $this 對象屬性/方法調用重載了的函數方法,演示類的多態性:

PHP中$this,self,static有什么區別

上述文件執行后,返回值 Y::foo()。$this 作為實例化的 Y 對象,直接訪問了其動態方法 foo()。而繼承的 X 類的 foo()  方法被重寫,并不執行。

現在換一種寫法。

PHP中$this,self,static有什么區別

這次類 X 的 bar 方法我們使用 self::foo() 調用。那么很顯然,self 就是 class X 本身,那么調用的也自然是 X 的 foo  方法。上述程序輸出 X::foo()。

引申:盡量別用 self::,要用 static::

self 簡單好用,但是作用域叫人惱火。因為它的作用域是在定義時的,而不是執行時的。比如這么個例子:

PHP中$this,self,static有什么區別

如果調用 Person::status(),返回 'Person is alive'。現在新建類,并繼承該類:

PHP中$this,self,static有什么區別

執行 Deceased::status(),你期望得到什么,肯定是 Decased 類的 getStatus() 返回的值對么?可是結果返回了  Person::status() 的值。這是因為 status 方法被調用時,使用了 self::getStatus(),訪問的是 Person 類的  getStatus() 方法。這是由 self 作用域決定的。

怎么才能返回期望的值?使用 static 替換 self。

還是那個規則:$this 引用的是當前的類的實例,static 引用的是當前的類本身。

我們從優秀的代碼中學習用法。下面是 Laravel ValidationData 類內的一個靜態方法。

PHP中$this,self,static有什么區別

感謝各位的閱讀,以上就是“PHP中$this,self,static有什么區別”的內容了,經過本文的學習后,相信大家對PHP中$this,self,static有什么區別這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

php
AI

加查县| 南京市| 治多县| 彭泽县| 安吉县| 定兴县| 岳普湖县| 洪雅县| 桓台县| 沈阳市| 台南县| 清远市| 巴林左旗| 水富县| 沽源县| 米易县| 邯郸县| 卫辉市| 通海县| 芷江| 怀安县| 荆州市| 宁津县| 体育| 客服| 疏附县| 静海县| 巴楚县| 时尚| 靖远县| 石楼县| 图片| 三亚市| 博爱县| 呼伦贝尔市| 玉门市| 大邑县| 股票| 驻马店市| 襄垣县| 临清市|