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

首頁 > 編程 > PHP > 正文

PHP 延遲靜態綁定 功能 static

2019-11-08 01:49:11
字體:
來源:轉載
供稿:網友

從這個名字的定義提取出兩個關鍵點,第一點靜態,也就是說這個功能只適用于靜態屬性或靜態方法。 第二點延遲綁定,這個根據下面代碼就可以很好的理解 看一下這個例子:

<?phpclass A{ static $name = "Tom"; public function PRintName(){ echo self::$name."/n"; self::fun(); } static function fun(){ echo "A Class/n"; }}class B extends A{ static $name = "Jon"; static function fun(){ echo "B Class/n"; }}$obj = new B();$obj->printName();

輸出結果 Tom A Class

我在printName函數里面使用了self關鍵字,self是指向當前類的”指針”, 所以很多人會理想的認為輸出結果會是這樣: Join B Class

是這樣的,在定義A類的是時候,在函數printName里面使用self關鍵字調用了靜態方法或屬性, 但是這個函數一旦定義好,A類的靜態方法和屬性就被綁定到函數了,不要去追究為什么,php就是這么實現的, 但是我們現在要實現這樣的效果,就是函數定義好后里面使用到的靜態方法和屬性不要立即綁定死, 而是根據最終繼承的類來確定綁定。 所以php在5.5以后使用了static關鍵字來解決這個問題,解決后的代碼例子如下:

<?phpclass A{ static $name = "Tom"; public function printName(){ echo static::$name."/n"; static::fun(); } static function fun(){ echo "A Class/n"; }}class B extends A{ static $name = "Jon"; static function fun(){ echo "B Class/n"; }}$obj = new B();$obj->printName();

輸出結果 Join B Class

大家可以在項目中自行挖掘使用場景,比如一個會員父類 class Vip下面兩個子類分別是 超級會員 svip 和 年費會員 yvip可以在兩個子類中分別重寫 static usergroup() 方法 或者其他靜態屬性 ,父類中使用延遲靜態綁定,這樣可以寫出很優雅的代碼


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 眉山市| 巴里| 攀枝花市| 凤庆县| 吴忠市| 南投县| 富川| 阜阳市| 大新县| 宁津县| 永新县| 来凤县| 云霄县| 昔阳县| 和田县| 铁力市| 高淳县| 贡觉县| 综艺| 方正县| 荣成市| 赞皇县| 富宁县| 巨鹿县| 南宁市| 江门市| 沙坪坝区| 潍坊市| 江源县| 额敏县| 天等县| 泰顺县| 岢岚县| 洞口县| 山西省| 常宁市| 武义县| 应用必备| 潜山县| 原阳县| 襄樊市|