PHP 5.5 の新機能の分析_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:01:59
オリジナル
789 人が閲覧しました

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 の機能の 1 つは反復のメモリ オーバーヘッドを効果的に削減することであることがわかります。たとえば、公式 Web サイトにあるこの xrange の例:

コードをコピーします コードは次のとおりです:

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

echo ' 1 桁の奇数: ';

/*
*
*/
foreach (xrange(1, 9, 2) as $number) {
echo "$number "
}

echo "n" では、配列が作成されたり返されたりすることはないことに注意してください。 ;
?>

ここでの xrange は反復であり、関数は range と同じです。 range 関数を使用すると、関数の内部実装は各反復の中間プロセス、つまり各中間変数を保存します。メモリ空間がある場合、最初にプログラムによって使用されるメモリが使用されます。空間が大きくなり、メモリの割り当てとメモリのリサイクルにより、プログラムの実行時間が長くなります。しかし、yield によって実装された xrange 関数を使用すると、その中のすべての中間変数は 1 つのメモリ $i のみを使用するため、節約される時間とスペースは小さくなります。

それでは、なぜ収量にこれほどの影響があるのでしょうか? Lua の歩留まりを考えると、コルーチンの概念がここにあります。 Lua 言語では、プログラムが yield に達すると、コルーチンを使用してコンテキスト環境が記録され、その後、プログラムの操作権が main 関数に返され、main 関数が再開すると、コルーチンが再び起動され、 yield レコードが読み取られます。これにより、プログラミング言語レベルでマルチコルーチン操作が形成されます。 PHP 5.5 の yield にも同じことが当てはまります。プログラムが yield するために実行されると、現在のプログラムはコンテキストを記録するためにコルーチンを呼び出し、その後 main 関数が動作し続けます。ただし、PHP では、resume などのキーワードは使用されません。ただし、「コルーチンが呼び出されたときに使用します。たとえば、上記の例の foreach 反復子は収量を呼び出すことができます。したがって、上の例は理解できます。

実際、yield のリファレンスによると、多くの内部関数、特に反復に関連する関数は最適化できるはずです。将来的には、同じ関数を実装する関数のyieldバージョンとnon-yieldバージョンが存在する可能性があります。


2finallyキーワード
これはJavaのfinallyと同じで、古典的なtry...catch...finallyの3段階の例外処理です。


3 foreach は list() をサポートします
「配列の配列」の反復では、以前は 2 つの foreach を使用する必要がありましたが、今は foreach + list を使用するだけで済みますが、この配列の配列内の各配列の数は数字は同じである必要があります。ドキュメントの例を見れば一目で理解できます。

コードをコピー コードは次のとおりです:
$array = [
[1, 2],
[3, 4],

]; list($ a, $b)) {
echo "A: $a; B: $bn";
?>



4 empty() の前にカスタム関数がサポートされるようになりましたパラメータを関数にすることはできません。これで動作します

コードをコピーします
コードは次のとおりです:
function foo(){ Return false }
if(empty(foo())){
echo 11; それ以外の場合は echo array(1, 2, 3)[0];

echo "foobar"[2];
6 渡されたクラス名:class を取得できます





コードをコピーします
コードは次のとおりです:
namespace NameSpace; class ClassName {}
echo ClassName::クラス; エコー;
7 opcache 拡張機能を追加しました
opcache を使用すると、他の拡張機能と同様に、静的コンパイル (--enable-opcache) または動的拡張 (zend_extension) によってこの最適化項目を追加できます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327953.html技術記事 PHP5.5 は少し前にリリースされましたが、その新機能は何ですか?公式ドキュメントはこちらです: http://www.php.net/manual/zh/migration55.new-features.php 1 ジェネレーター yield キーワード yield in...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!