亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP新特性詳解之命名空間、性狀與生成器

2024-05-04 23:58:47
字體:
來源:轉載
供稿:網友

本文主要跟大家介紹了關于PHP新特性之php/215059.html">php/235020.html">命名空間、性狀與生成器的相關內容,分享出來供大家參考學習,下面來一起看看詳細的介紹:

1.命名空間

命名空間是什么?

     1).命名空間在PHP 5.3中被引入,類似于文件夾的功能。例如Symfony框架中的Request和Response,位于Symfony的命名空間下。

     2).命名空間始終應該在<?php標簽的下面一行。

     3).PHP文件的命名空間和操作系統的物理文件系統不同,這是一個虛擬的概念,沒有必要和文件系統的目錄結構完全對應。雖然如此,絕大多數PHP組件為了兼容廣泛使用的PSR4自動加載標準,會把子命名空間放到文件系統的子目錄中去。

     4).命名空間只是PHP語言的一種記號,PHP解釋器會將這種記號作為前綴添加到類、接口、函數和常量的名稱前面。

為什么需要命名空間?

     1).命名空間使得程序可以像沙盒一樣運行,可以和其他開發者編寫的代碼一起使用。確保了自己的代碼和項目可以和項目的第三方依賴一起使用。

聲明命名空間

     1).頂層命名空間經常用于設定頂層廠商名。2).廠商的命名空間必須具有全局唯一性,子命名空間就沒有那么重要,但有助于組織項目的代碼。

導入和別名

     1).從PHP5.3開始可以導入PHP類、接口和其他命名空間,并為其創建別名。從PHP5.6開始可以導入PHP函數和常量,并為其創建別名。

     2).使用use關鍵字導入代碼時無須在開頭加上符號,因為PHP假定導入的是完全限定命名空間。use關鍵字必須出現在全局作用域中即不能出現在類或者函數中,因為這個關鍵字是在編譯的時候使用的,不過,use關鍵字可以在命名空間聲明語句后使用,導入其他命名空間的代碼。

從PHP5.6開始我們可以導入函數和常量。

<?phpuse func Namespace/functionName;functionName();

也可以導入常量,

use constant Namespace/CONS_NAME;echo CONS_NAME;

函數和常量的別名與類名的創建方式一樣。

最佳實踐

      1).PHP允許在一個PHP文件中定義多個命名空間。但是這么做容易讓人困惑,違背了一個文件一個類的良好實踐。2).在一個命名空間中引用全局的命名空間的代碼時,需要加上前綴,告訴PHP需要在全局中查找該類,例如PHP原生的異常類。

自動加載

      1).命名空間為PHP-FIG制定的PSR4自動加載器奠定了堅實的基礎。

2.使用接口

      1).就像我可以選擇開不一樣的車。因為他們都有方向盤、油門和剎車,并且燃料都是汽油。

3.性狀

      1).形狀是類的部分實現(常量、屬性和方法),可以混入一個或者多個現有的PHP類中,性狀有兩個作用,表明類可以做什么(類似接口),提供模塊化實踐(類似類)。

      2).性狀使得兩個無關的類可以使用相同屬性和方法。

      3).PHP解釋器會把性狀復制粘貼到類的定義體中。

4.創建生成器

1)在普通函數中一次或者多次使用yield關鍵字,不返回值,只生成值,這個函數就是一個生成器。例如:

<?phpfunction myGenerator() { yield 'value1'; yield 'value2';}

調用生成器函數的時候,PHP會返回一個屬于Generator類的對象,這個對象可以使用foreach()函數迭代,每次迭代,PHP會要求這個對象的實例計算并提供下一個要迭代的值,生成器的優雅之處就是在每產出一個值之后,生成器內部狀態會一直停頓和恢復之間切換,直到抵達定義體的末尾或者遇到空的return;語句為止,例如:

<?phpforeach (myGenerator() as $yieldedValue) { echo $yieldedValue, PHP_EOL;}

以上例子會輸出

value1value2

2).生成器是如何節約內存的?生成一個范圍內的數值(錯誤方式)

function makeRange($length) { $dataset = []; for ($i=0; $i < $length; $i++) { $dataset[] = $i; } return $dataset;}$customRange = makeRange(1000000);foreach ($customeRange as $i) { echo $i, PHP_EOL;}

預先創建了一個包含很大整數組成的數組,再看使用生成器的例子。

function makeRange($length) { for ($i = 0; $i < $length; $i++) { yield $i; }}foreach(makeRange(1000000) as $i) { echo $i, PHP_EOL;}

在實際的例如迭代一個4GB大小的文件中功能中,迭代器大展身手。

function getRows($file) { $handle = fopen($file, 'rb'); if ($handle === false) { throw new Exception(); } //feof()函數檢測是否到達文件末尾 while (feof($handle) === false) { //fgetcsv()一次讀取csv文件的一行 yield fgetcsv($handle); } fclose($handle)}foreach (getRows('data.csv') as $row) { print_r($row);}

3).生成器沒有為PHP添加新功能,需要實現在數據集中執行快進、快退和查找,最好自己編寫類實現Iterator接口,或者使用PHP標準庫中的某個原生迭代器。

原生迭代器鏈接

總結

以上就是這篇文章的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97精品国产91久久久久久| 国产成人精品久久| 国产91在线播放九色快色| 久久久久久国产精品| 成人黄色影片在线| 亚洲一区二区久久久久久久| 美女999久久久精品视频| 欧美成人三级视频网站| 2018日韩中文字幕| 亚洲欧美在线播放| 欧美日韩成人在线视频| 久久久久久久成人| 色www亚洲国产张柏芝| 午夜精品三级视频福利| 国产一区二区精品丝袜| 在线观看中文字幕亚洲| 91久久精品国产91性色| 亚洲第一男人天堂| 国产视频亚洲精品| 国产精品91一区| 国产精品丝袜视频| 国产91精品不卡视频| 91禁外国网站| 亚洲欧美日韩久久久久久| 色先锋资源久久综合5566| 欧美中文字幕精品| 国外成人性视频| 亚洲四色影视在线观看| 国产在线高清精品| 日韩中文在线观看| 欧美精品免费播放| 岛国av在线不卡| 色一区av在线| 国产91ⅴ在线精品免费观看| 亚洲自拍偷拍一区| 成人午夜两性视频| 亚洲乱码av中文一区二区| 日韩欧美中文第一页| 亚洲福利在线视频| 亚洲精品国产福利| 亚洲最新av在线网站| 2023亚洲男人天堂| 久久久久久久久国产| 中文字幕精品久久久久| 高清亚洲成在人网站天堂| 国产精品第三页| 日韩av在线网页| 成人欧美在线视频| 91精品美女在线| 伦伦影院午夜日韩欧美限制| 日韩有码在线电影| 日韩人体视频一二区| 日本午夜在线亚洲.国产| 国产精品男女猛烈高潮激情| www.亚洲一区| 日韩欧美精品网站| 中文字幕不卡av| www.xxxx精品| 17婷婷久久www| 国产精品视频一区二区三区四| 国产精品亚洲一区二区三区| 欧美成人免费观看| 亚洲男人天堂2023| 国产日韩欧美日韩大片| 欧美综合一区第一页| 精品色蜜蜜精品视频在线观看| 精品日韩美女的视频高清| 久久久久久亚洲精品| 色婷婷av一区二区三区久久| 欧美精品久久一区二区| 久久精品国产精品亚洲| 日韩视频中文字幕| 97在线观看视频国产| 欧美亚洲国产日本| 91av在线精品| 欧美午夜性色大片在线观看| 81精品国产乱码久久久久久| 一本色道久久综合狠狠躁篇的优点| 韩国19禁主播vip福利视频| 一区二区福利视频| 国产精品自拍偷拍| 亚洲综合日韩在线| 亚洲视频在线观看免费| 午夜精品久久久久久久久久久久| 国产精品狼人色视频一区| 97色在线视频| 91成人天堂久久成人| 精品国产美女在线| 欧美大片免费观看在线观看网站推荐| 国产一区二区三区在线观看视频| 亚洲人高潮女人毛茸茸| 欧美理论电影在线观看| 日本精品久久久久久久| 国产综合在线看| 久久免费少妇高潮久久精品99| 国产精品视频资源| 国产成人精品a视频一区www| 亚洲视频欧洲视频| 日韩av电影在线网| 91系列在线观看| 国产一区玩具在线观看| 91亚洲永久免费精品| 欧美又大又粗又长| 一个人看的www久久| 91亚洲永久免费精品| 国产精品18久久久久久首页狼| 亚洲欧美自拍一区| 亚洲日本中文字幕| 国色天香2019中文字幕在线观看| 亚洲成人av片在线观看| 欧美中文字幕第一页| 伊人久久大香线蕉av一区二区| 国产美女搞久久| 国内精品久久久久伊人av| 欧美在线免费视频| 欧美性69xxxx肥| 操人视频在线观看欧美| 亚洲最大av在线| 亚洲综合一区二区不卡| 69视频在线播放| 欧美综合国产精品久久丁香| 欧美成人激情视频| 亚洲精品国产免费| 亚洲性视频网址| 久久99久久99精品免观看粉嫩| 亚洲色图25p| 欧美视频不卡中文| 亚洲精品国精品久久99热一| 日韩av中文字幕在线| 97碰碰碰免费色视频| 色小说视频一区| 亚州欧美日韩中文视频| 亚洲欧美一区二区三区久久| 黑人巨大精品欧美一区二区免费| 91久久精品美女高潮| 国产精品久久激情| 97视频在线观看视频免费视频| 国产精品视频精品视频| 韩国三级电影久久久久久| 亚洲va欧美va国产综合剧情| 亚洲欧美资源在线| 日韩av免费一区| 欧美最猛性xxxxx免费| 中文字幕国产日韩| 欧美激情视频在线观看| 欧美裸身视频免费观看| 日韩在线观看免费高清| 日韩欧美精品在线观看| 日韩在线视频一区| 欧美极品欧美精品欧美视频| 亚洲二区中文字幕| 亚洲最新中文字幕| 国产精品亚洲精品| 亚洲电影免费观看高清完整版在线| 岛国av午夜精品| 激情久久av一区av二区av三区| 超碰精品一区二区三区乱码| 久久精品国产成人| 日韩视频免费中文字幕| 国产精品久久久久久久久久久久久久| 久久精品国亚洲| 国产热re99久久6国产精品| 国产精品成人久久久久| 久久久精品在线观看|