国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解PHP后期靜態綁定分析與應用

2024-05-06 15:20:29
字體:
來源:轉載
供稿:網友

基礎知識

1. 范圍解析操作符 (::)

可以用于訪問靜態成員,類常量,還可以用于覆蓋類中的屬性和方法。 self,parent 和 static 這三個特殊的關鍵字是用于在類定義的內部對其屬性或方法進行訪問的。 parent用于調用父類中被覆蓋的屬性或方法(出現在哪里,就將解析為相應類的父類)。 self用于調用本類中的方法或屬性(出現在哪里,就將解析為相應的類;注意與$this區別,$this指向當前實例化的對象)。 當一個子類覆蓋其父類中的方法時,PHP 不會調用父類中已被覆蓋的方法。是否調用父類的方法取決于子類。

2. PHP內核將類的繼承實現放在了"編譯階段"

<?phpclass A{ const H = 'A'; const J = 'A'; static function testSelf(){  echo self::H; //在編譯階段就確定了 self解析為 A }}class B extends A{ const H = "B"; const J = 'B'; static function testParent(){  echo parent::J; //在編譯階段就確定了 parent解析為A } /* 若重寫testSelf則能輸出“B”, 且C::testSelf()也是輸出“B” static function testSelf(){  echo self::H; } */}class C extends B{ const H = "C"; const J = 'C';}B::testParent();B::testSelf();echo "/n";C::testParent();C::testSelf();

運行結果:

AA
AA

結論:

self::和parent::出現在某個類X的定義中,則將被解析為相應的類X,除非在子類中覆蓋父類的方法。

3.Static(靜態)關鍵字

作用:

- 在函數體內的修飾變量的static關鍵字用于定義靜態局部變量。
- 用于修飾類成員函數和成員變量時用于聲明靜態成員。
- (PHP5.3之后)在作用域解析符(::)前又表示靜態延遲綁定的特殊類。

例子:

定義靜態局部變量(出現位置:局部函數中)

特征:靜態變量僅在局部函數域中存在,但當程序執行離開此作用域時,其值并不丟失。

<?phpfunction test(){ static $count = 0; $count++; echo $count; if ($count < 10) {  test(); } $count--;}

定義靜態方法,靜態屬性

a)聲明類屬性或方法為靜態,就可以不實例化類而直接訪問。

b)靜態屬性不能通過一個類已實例化的對象來訪問(但靜態方法可以)

c)如果沒有指定訪問控制,屬性和方法默認為公有。

d)由于靜態方法不需要通過對象即可調用,所以偽變量 $this 在靜態方法中不可用。

e)靜態屬性不可以由對象通過 -> 操作符來訪問。

f)用靜態方式調用一個非靜態方法會導致一個 E_STRICT 級別的錯誤。

g)就像其它所有的 PHP 靜態變量一樣,靜態屬性只能被初始化為文字或常量,不能使用表達式。所以可以把靜態屬性初始化為整數或數組,但不能初始化為另一個變量或函數返回值,也不能指向一個對象。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 神农架林区| 元氏县| 桃园县| 西乌珠穆沁旗| 白朗县| 卢龙县| 云林县| 盐津县| 泉州市| 志丹县| 石门县| 甘德县| 大埔县| 民丰县| 泽普县| 日土县| 巫山县| 永胜县| 怀化市| 临湘市| 武宣县| 西林县| 寿宁县| 青河县| 赫章县| 宝兴县| 丰城市| 台南县| 南陵县| 八宿县| 鄢陵县| 宜城市| 格尔木市| 长宁区| 宜州市| 黄平县| 内黄县| 永修县| 商城县| 乐亭县| 泰和县|