站長資訊網
最全最豐富的資訊網站

詳解PHP匿名類的用法

在PHP7之后,PHP中加入了匿名類的特性。匿名類和匿名方法讓PHP成為了更現代化的語言,也讓我們的代碼開發工作越來越方便。我們先來看看匿名類的簡單使用。

推薦:《PHP視頻教程》

// 直接定義 $objA = new class  {     public function getName()     {         echo "I'm objA";     } }; $objA->getName();  // 方法中返回 function testA() {     return new class      {         public function getName()         {             echo "I'm testA's obj";         }     }; }  $objB = testA(); $objB->getName();  // 作為參數 function testB($testBobj) {     echo $testBobj->getName(); } testB(new class{         public function getName()     {             echo "I'm testB's obj";         }     });

一次性給出了三種匿名類的使用方法。匿名類可以直接定義給變量,可以在方法中使用return返回,也可以當做參數傳遞給方法內部。其實,匿名類就像一個沒有事先定義的類,而在定義的時候直接就進行了實例化。

// 繼承、接口、訪問控制等 class A {     public $propA = 'A';     public function getProp()     {         echo $this->propA;     } } trait B {     public function getName()     {         echo 'trait B';     } } interface C {     public function show(); } $p4 = 'b4'; $objC = new class($p4) extends A implements C {     use B;     private $prop1 = 'b1';     protected $prop2 = 'b2';     public $prop3 = 'b3';      public function __construct($prop4)     {         echo $prop4;     }      public function getProp()     {         parent::getProp();         echo $this->prop1, '===', $this->prop2, '===', $this->prop3, '===', $this->propA;         $this->getName();         $this->show();     }     public function show()     {         echo 'show';     } };  $objC->getProp();

匿名類和普通類一樣,可以繼承其他類,可以實現接口,當然也包括各種訪問控制的能力。也就是說,匿名類在使用方面和普通類并沒有什么不同。但如果用get_class()獲取類名將是系統自動生成的類名。相同的匿名類返回的名稱當然也是相同的。

// 匿名類的名稱是通過引擎賦予的 var_dump(get_class($objC));  // 聲明的同一個匿名類,所創建的對象都是這個類的實例 var_dump(get_class(testA()) == get_class(testA()));

那么匿名類中的靜態成員呢?當然也和普通類一樣,靜態成員是屬于類而不是實例的。

// 靜態變量 function testD() {     return new class{         public static $name;     }; } $objD1 = testD(); $objD1::$name = 'objD1';  $objD2 = testD(); $objD2::$name = 'objD2';  echo $objD1::$name;

當類中的靜態變量修改時,所有類實例的這個靜態變量都會跟著變化。這也是普通類靜態成員的特性。

測試代碼: https://github.com/zhangyue0503/dev-blog/blob/master/php/201912/source/PHP%E5%8C%BF%E5%90%8D%E7%B1%BB%E7%9A%84%E7%94%A8%E6%B3%95.php

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产精品99久久久精品无码| vvvv99日韩精品亚洲| 国产日韩精品在线| 伦精品一区二区三区视频| 丁香六月婷婷精品免费观看| 国产偷窥熟女精品视频大全| 99re5在线精品视频热线| 久久国产精品久久| 日韩av片无码一区二区三区不卡| 亚洲熟女精品中文字幕| 国产精品免费AV片在线观看| 日韩精品一区二区亚洲AV观看| 精品久久久久久中文字幕女| 亚洲精品亚洲人成人网| 国产精品 一区 在线| 国产成人精品久久亚洲高清不卡| 精品国产一区二区三区久久| 国产香蕉国产精品偷在线| 国产精品无码翘臀在线观看| 久久精品隔壁老王影院| 亚洲精品成人无限看| 亚洲欧美日韩一区二区三区| 国产主播精品福利19禁vip| 大伊香蕉在线精品视频人碰人| 久久99久久99精品免观看不卡| 亚洲国产另类久久久精品黑人| 国产午夜亚洲精品国产成人小说| 久久青青草原精品国产不卡| 日韩社区一区二区三区| 国产成人亚洲精品91专区高清 | 日本伊人精品一区二区三区| 久久久亚洲精品国产| 久久精品这里热有精品2015| 久久精品免视看国产成人| 久久国内精品自在自线400部o| 亚洲国产精品久久| 精品亚洲A∨无码一区二区三区| 久久久久se色偷偷亚洲精品av| 丰满人妻熟妇乱又伦精品| 99久久免费国产精品热| 日韩在线a视频免费播放|