天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

解析PHP 5.5 新特性

php5.5 前不久前剛剛發布,里面的新特性有什么?官方文檔在這里:
http://www.php.NET/manual/zh/migration55.new-features.php
1 生成器 yield關鍵字
yield的中文文檔在這里:http://php.NET/manual/zh/language.generators.overview.php
查看文檔,能知道yield的一個功能就是能有效的降低迭代的內存開銷。比如官網的這個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函數的話,那么函數內部實現會儲存每個迭代的中間過程,即每個中間變量都有個內存空間,那么首先程序使用的內存空間就大了,而且分配內存,回收內存都會導致程序的運行時間加長。但是如果使用上yield實現的xrange函數的話,里面所有的中間變量都只使用一個內存$i,這樣節省的時間和空間都會變小。

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

其實照著引用yield來說,好多內部函數,特別是迭代有關的函數應該都有可能進行優化。或許后續會有yield版本和非yield版本的實現同一功能的函數把。

2 finally關鍵字
這個和Java中的finally一樣,經典的try ... catch ... finally 三段式異常處理。

3 foreach 支持list()
對于“數組的數組”進行迭代,之前需要使用兩個foreach,現在只需要使用foreach + list了,但是這個數組的數組中的每個數組的個數需要一樣。看文檔的例子一看就明白了。
復制代碼 代碼如下:
<?php
$array = [
    [1, 2],
    [3, 4],
];

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

4 empty() 支持自定義函數了
之前empty()中的參數是不能為函數的。現在可以了
復制代碼 代碼如下:
<?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的性能,你可以和其他擴展一樣靜態編譯(--enable-opcache)或者動態擴展(zend_extension)加入這個優化項。

php技術解析PHP 5.5 新特性,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产成人免费视频 | 琉璃美人煞在线观看 | 国产免费久久精品国产传媒 | 绞尽奶汁by菊花开 | 在线看片韩国免费人成视频 | 国产A级毛片久久久久久久 国产a级黄色毛片 | 99精品久久久久久久 | 娇喘嗯嗯 轻点啊视频福利 娇喘高潮教室h | 国产精品久久人妻互换毛片 | 果冻传媒9CM在线观看 | 国产精品99久久久久久宅男AV | 果冻传媒在线观看完整版免费 | 国产色欲一区二区精品久久呦 | 老湿机一区午夜精品免费福利 | 色综合久久网女同蕾丝边 | 麒麟色欧美影院在线播放 | 国产第一页在线视频 | 视频一区国产在线二区 | 亚洲AV國產国产久青草 | 中文字幕在线观看亚洲视频 | 噜噜噜狠狠夜夜躁 | 日日干夜夜爱 | 纲手裸乳被爆白浆 | 国产私拍福利精品视频 | 亚洲AV无码专区国产精品99 | 我的好妈妈8高清在线观看WWW | 国语对白老女人8av 国语对白刺激真实精品 | 一个人在线观看免费中文www | 欧美日韩永久久一区二区三区 | 拔萝卜电视剧高清免费 | 欧美18videosex性欧美老师 | 高挑人妻无奈张开腿 | 免费精品国产人妻国语 | 午夜福利不卡片在线播放免费 | 日韩欧美三区 | 欧美性爱 成人 | 成人伊人青草久久综合网 | 强奷乱码中文字幕熟女免费 | 国产精品…在线观看 | 99久热这里精品免费 | 无遮掩H黄纯肉动漫在线观看星 |