亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解析PHP 5.5 新特性

 更新時間:2013年07月02日 10:30:05   作者:  
本篇文章是對PHP 5.5 的新特性進行了詳細的分析介紹,需要的朋友參考下
PHP5.5 前不久前剛剛發(fā)布,里面的新特性有什么?官方文檔在這里:
http://www.php.net/manual/zh/migration55.new-features.php
1 生成器 yield關鍵字
yield的中文文檔在這里:http://php.net/manual/zh/language.generators.overview.php
查看文檔,能知道yield的一個功能就是能有效的降低迭代的內(nèi)存開銷。比如官網(wǎng)的這個xrange例子:
復制代碼 代碼如下:

<?php
function xrange($start, $limit, $step = 1) {
    for ($i = $start; $i <= $limit; $i += $step) {
        yield $i;
    }
}

echo 'Single digit odd numbers: ';

/*
 * Note that an array is never created or returned,
 * which saves memory.
 */
foreach (xrange(1, 9, 2) as $number) {
    echo "$number ";
}

echo "\n";
?>

這里的xrange是一個迭代,功能和range是一樣的,如果使用range函數(shù)的話,那么函數(shù)內(nèi)部實現(xiàn)會儲存每個迭代的中間過程,即每個中間變量都有個內(nèi)存空間,那么首先程序使用的內(nèi)存空間就大了,而且分配內(nèi)存,回收內(nèi)存都會導致程序的運行時間加長。但是如果使用上yield實現(xiàn)的xrange函數(shù)的話,里面所有的中間變量都只使用一個內(nèi)存$i,這樣節(jié)省的時間和空間都會變小。

那么為什么yield會有這樣的效果呢?聯(lián)想到lua中的yield,這里就算是協(xié)程的概念了。在lua語言中,當程序運行到y(tǒng)ield的時候,使用協(xié)程將上下文環(huán)境記錄住,然后將程序操作權歸還到主函數(shù),當主函數(shù)調(diào)用resume的時候,會重新喚起協(xié)程,讀取yield記錄的上下文。這樣形成了程序語言級別的多協(xié)程操作。php 5.5這里的yield也是同樣的道理,當程序運行到y(tǒng)ield的時候,當前程序就喚起協(xié)程記錄上下文,然后主函數(shù)繼續(xù)操作,只是php中沒有使用如resume一樣的關鍵字,而是“在使用的時候喚起”協(xié)程。比如上例中的foreach迭代器就能喚起yield。所以上面的這個例子就能理解了。

其實照著引用yield來說,好多內(nèi)部函數(shù),特別是迭代有關的函數(shù)應該都有可能進行優(yōu)化?;蛟S后續(xù)會有yield版本和非yield版本的實現(xiàn)同一功能的函數(shù)把。

2 finally關鍵字
這個和java中的finally一樣,經(jīng)典的try ... catch ... finally 三段式異常處理。

3 foreach 支持list()
對于“數(shù)組的數(shù)組”進行迭代,之前需要使用兩個foreach,現(xiàn)在只需要使用foreach + list了,但是這個數(shù)組的數(shù)組中的每個數(shù)組的個數(shù)需要一樣??次臋n的例子一看就明白了。
復制代碼 代碼如下:

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b)) {
    echo "A: $a; B: $b\n";
}
?>

4 empty() 支持自定義函數(shù)了
之前empty()中的參數(shù)是不能為函數(shù)的?,F(xiàn)在可以了
復制代碼 代碼如下:

<?php
function foo(){
    return false;
}

if(empty(foo())){
    echo 11;
} else {
    echo 12;
}

5 非變量array和string也能支持下標獲取了
復制代碼 代碼如下:

<?php

echo array(1, 2, 3)[0];
echo [1, 2, 3][0];

echo "foobar"[2];

?>

6 類名通過::class可以獲取
復制代碼 代碼如下:

<?php
namespace Name\Space;
class ClassName {}

echo ClassName::class;

echo "\n";
?>

7 增加了opcache擴展
使用opcache會提高php的性能,你可以和其他擴展一樣靜態(tài)編譯(--enable-opcache)或者動態(tài)擴展(zend_extension)加入這個優(yōu)化項。

相關文章

  • PHP使用pear自帶的mail類庫發(fā)郵件的方法

    PHP使用pear自帶的mail類庫發(fā)郵件的方法

    這篇文章主要介紹了PHP使用pear自帶的mail類庫發(fā)郵件的方法,實例分析了pear的安裝及mail類發(fā)送郵件的實現(xiàn)技巧,非常簡單實用,需要的朋友可以參考下
    2015-07-07
  • PHP獲取redis里不存在的6位隨機數(shù)應用示例【設置24小時過時】

    PHP獲取redis里不存在的6位隨機數(shù)應用示例【設置24小時過時】

    這篇文章主要介紹了PHP獲取redis里不存在的6位隨機數(shù)的方法,可設置24小時過時限制,涉及php字符串及數(shù)據(jù)庫相關操作技巧,需要的朋友可以參考下
    2017-06-06
  • php登錄超時檢測功能實例詳解

    php登錄超時檢測功能實例詳解

    這篇文章主要介紹了php登錄超時檢測功能實例詳解的相關資料,需要的朋友可以參考下
    2017-03-03
  • php實現(xiàn)圖片添加描邊字和馬賽克的方法

    php實現(xiàn)圖片添加描邊字和馬賽克的方法

    這篇文章主要介紹了php實現(xiàn)圖片添加描邊字和馬賽克的方法,通過自定義函數(shù)imagemask與imagetextouter實現(xiàn)圖片添加馬賽克與文字描邊的效果,非常具有實用價值,需要的朋友可以參考下
    2014-12-12
  • php繪制一條弧線的方法

    php繪制一條弧線的方法

    這篇文章主要介紹了php繪制一條弧線的方法,主要涉及GD庫中imagearc方法的使用技巧,需要的朋友可以參考下
    2015-01-01
  • php設計模式 Command(命令模式)

    php設計模式 Command(命令模式)

    將一個請求封裝為一個對象從而使你可用不同的請求對客戶進行參數(shù)化,對請求排除或記錄請求日志,以及支持可取消的操作
    2011-06-06
  • PHP中靜態(tài)變量的使用方法實例分析

    PHP中靜態(tài)變量的使用方法實例分析

    這篇文章主要介紹了PHP中靜態(tài)變量的使用方法,結(jié)合實例形式分析了php靜態(tài)變量的使用步驟與具體操作技巧,需要的朋友可以參考下
    2016-12-12
  • PHP無限極分類函數(shù)的實現(xiàn)方法詳解

    PHP無限極分類函數(shù)的實現(xiàn)方法詳解

    這篇文章主要介紹了PHP無限極分類函數(shù)的實現(xiàn)方法,結(jié)合實例形式詳細分析了php實現(xiàn)無限極分類的具體思路、實現(xiàn)代碼與相關注意事項,需要的朋友可以參考下
    2017-04-04
  • php批量刪除超鏈接的實現(xiàn)方法

    php批量刪除超鏈接的實現(xiàn)方法

    有時候我們會遇到這種需求,清除掉一段html文本內(nèi)容中的超鏈接,這時有什么好辦法呢?下面就總結(jié)幾種簡單的方法清除html文本中的超鏈接,需要的朋友可以參考下
    2015-10-10
  • php如何使用3des加解密及hmacsha256加密

    php如何使用3des加解密及hmacsha256加密

    因為工作中要用到加密,接口中要求也是用密文傳輸數(shù)據(jù),用到3des加密,就研究了一下,下面這篇文章主要給大家介紹了關于php如何使用3des加解密及hmacsha256加密的相關資料,需要的朋友可以參考下
    2022-09-09

最新評論