久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

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

這篇文章主要給大家介紹了關于PHP新特性之命名空間、性狀與生成器的相關資料,主要涉及到php中trait(性狀)與generator(生成器) 方面的內容,對于php中trait(性狀)與generator(生成器) 感興趣的

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

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開始我們可以導入函數和常量。

<?php
use 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關鍵字,不返回值,只生成值,這個函數就是一個生成器。例如:

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

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

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

以上例子會輸出

value1
value2

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;
}
【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結合實例形式分析了php實現針對有序表插值查找的相關操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現的多維數組排序算法,結合實例形式對比分析了php針對多維數組及帶有鍵名的多維數組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結合ajaxuploadfile實現無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發接口使用RSA進行加密解密方法,對此有興趣的朋友可以學習下。
主站蜘蛛池模板: 成人在线影视 | 精品亚洲永久免费精品 | 99pao成人国产永久免费视频 | 99免费在线观看视频 | 一区二区三区国产好的精 | 午夜资源 | 久久91精品国产一区二区三区 | 丁香五月缴情综合网 | 国产精品乱码一区二区三区 | 日韩高清国产一区在线 | 国产精品九九 | 在线免费观看视频你懂的 | 免费在线看a | 日韩国产一区二区三区 | 久久神马 | 国产精品99久久久久久www | 国产精品永久久久久久久www | 久久久精品高清 | 亚洲欧美中文日韩在线v日本 | www.日韩| 国产高清视频一区 | 久久精品欧美一区二区三区不卡 | 9久9久| 97人人澡人人爽91综合色 | 日韩 欧美 二区 | 一区二区三区av | 欧美一区二区三区在线观看 | 激情 婷婷 | 区一区二区三在线观看 | 在线视频中文字幕 | www.狠狠操 | 亚洲精品日韩综合观看成人91 | 中文字幕亚洲区一区二 | 欧美一区二区精品 | 99成人精品 | 欧美精品在欧美一区二区 | 在线观看一区 | 91亚洲精品在线观看 | 成人免费视频在线观看 | 欧美一区二区三区在线观看 | 欧美日韩精品一区二区三区四区 |