PHP 7 リリース:主な機能と知っておくべきこと
開発者であれば、新しい PHP 7 の機能が完全に揃ったベータ版がリリースされたことをご存知でしょう。 7.0.0 バージョンには、多くの優れた機能が含まれています。ただし、実稼働環境では使用しないことをお勧めします。 安定バージョンを入手するまでは、2015 年 11 月に予定されています。
最新のベータ版を自由にテストしてプレイし、テスト中にバグを発見した場合は報告することができます。 PHP 7.0.0 で見られるすべての変更/アップグレードをリストします。
16.これは PHP 7 (6 ではありません) です
現在の安定バージョンは PHP 5.6 です。そのため、多くの開発者はバージョン 6.0 を期待しています。彼らが知らないのは、PHP 6 は過去に実験プロセスとしてすでに存在していましたが、本番フェーズには到達していないということです。コア開発チームは、次のメジャー リリースでは PHP 6 の名前をそのまま使用することを決定しました。
15. 64 ビット Windows のサポート
現在の PHP バージョンは、64 ビット整数または大きなファイルをサポートしていません。 PHP 7 では一貫した 64 ビット サポートが導入されるため、将来的には状況が変わるでしょう。つまり、ネイティブ 64 ビット整数と大きなファイルの両方がサポートされることになります。
14.非推奨の関数と拡張機能の削除
PHP 7 の主な目標の 1 つは、メモリを解放して改善を可能にすることでした。そのため、サポートされていない古いサーバー API、拡張機能、非推奨の機能を削除する必要がありました。
削除されたアイテムはすべて長期間使用されていません。ただし、古いバージョンでレガシー アプリケーションを実行している場合、PHP 7 にアップグレードするとコードが破損する可能性があります。
読む:開発者向けの 30 のバグ追跡ツール
13.グループ使用宣言
この RFC は、宣言のグループの概念を導入することにより、現在の PHP 名前空間の実装を改善するために作成されました。この機能は、通常、同じ名前空間から多くのクラスをインポートするプログラマーにとって便利です。新しい構文により冗長さが排除され、コードが整理され、入力時間を大幅に節約できます。
12.匿名クラス
匿名クラスの概念は、Java や C# などの他のオブジェクト指向プログラミング言語ですでに使用されています。これらは、コーディングと実行時間を高速化できる名前のないクラスにすぎません。クラスが実行中に 1 回だけ使用される場合、およびクラスを文書化する必要がない場合は、これらを使用する必要があります。
11.統一変数構文
統一された変数構文により、式の評価方法における多くの不一致が解決されます。たとえば、($object->closureProperties)() を使用してプロパティに割り当てられたクロージャを呼び出す機能。 だけでなく、静的呼び出しをチェーンすることもできます。
古いバージョンの PHP では、$obj->$properties[‘name’] プロパティ配列の name キーに名前が含まれているプロパティにアクセスします。これで、$properties に名前が存在するプロパティの名前キーにアクセスできるようになります。
10. Unicode コードポイントのエスケープ構文
新しいエスケープ文字 (\u) を使用すると、文字列内で Unicode 文字コード ポイントを (16 進数で) 明確に指定できます。 たとえば、絵文字を入力できない場合は、代わりにエスケープ シーケンスを使用できます。
9.例外処理における共有親クラス
PHP プログラマーにとって、致命的なエラーとキャッチ可能な致命的なエラーを処理することは、決して簡単な作業ではありません。新しいエンジン例外を使用すると、この種のエラーを例外に置き換えることができます。
プログラマーが従来の例外とエンジン例外の両方をキャッチできるようにするために、PHP 7 では \BaseException という名前の新しい共有親クラスが導入されました。 .
8.コール時のバインド クロージャ
クロージャ::バインド() およびクロージャ ->bindTo() $this のバインドを変更できます。 呼び出しスコープを個別にまたは一緒に作成し、 重複したクロージャを作成します。 PHP 7 では、$this の両方をバインドすることで、呼び出し時にこれを簡単に行うことができます。 同じオブジェクトへのスコープの呼び出しに を追加します。 クロージャ -> call()。 このメソッドはオブジェクトを最初の引数として受け取り、その後にクロージャに渡す任意の引数を受け取ります。
7.ヌル合体オペレーター
Coalesce オペレーターは「??」で示されます。最初のオペランドが存在し、NULL でない場合はその結果を返し、それ以外の場合は 2 番目のオペランドを返します。つまり、Coalesce は値が存在しない場合でも E_NOTICE を発生させないため、完全に安全に使用できます。
6.結合比較演算子
結合比較演算子 (宇宙船演算子とも呼ばれる) は、version_compare() に似ています。 動作では strcmp() を使用しますが、すべての汎用 PHP 値で使用できます。 Ruby と Perl プログラミング言語にはすでに存在します。
この演算子は、左のオペランドが大きい場合は -1 を返し、両方が等しい場合は 0、左のオペランドが大きい場合は 1 を返します。
5.ジェネレーター戻り式とジェネレーター委任
ジェネレーターの戻り式を使用すると、ジェネレーターが正常に完了したときに値を返すことができます。 PHP 7 では、$generator->getReturn() を呼び出すことができます。 戻り値を取得します。ジェネレーターがまだ返っていないか、キャッチされていない例外をスローしていない場合は、$generator->getReturn() 例外がスローされます。ジェネレーターが完了してもリターンがなかった場合は、NULL が返されます。
ジェネレーターの委任機能を使用すると、イテレーター、配列、または別のジェネレーターであっても、それ自体を走査できる別の反復可能な構造を返すことができます。部分構造の反復は、再帰的なループではなく、最も外側の元のループによって実行されます。
4.戻り値の型の宣言
多くのプログラマは、関数の戻り値の型を宣言したいと考えています。これは、特にインターフェイスにおいて、意図しない戻り値とサブタイプがスーパータイプの期待される戻り値の型を壊すことを防ぐのに役立ちます。さらに、PHP 7 には、スカラー型 (string、int、float、bool) 用の 4 つの新しい型減速が付属しています。これらの新しい型を使用すると、コーダーは整数、浮動小数点、文字列、およびブール値が返されることを期待していることを指定できます。
上の画像では、関数 foo は配列で返されることになっています。いくつかの複雑な例を確認してください。
3.抽象構文ツリー
最大かつ最も目に見えない変更は、コンパイル中のコードの中間表現である抽象構文ツリーの追加です。これは、オペコードをパーサーから直接出力するという既存の慣行に代わるものです。これにより、多くのハッキングを取り除くことができ、実装がより理解しやすく、保守しやすくなります。また、シングルパス コンパイル プロセスでは実現できなかった構文を実装することもできます。
2.まったく新しい Zend エンジン
最初の Zend Engine は 1999 年に PHP 4 で導入されました。これは、PHP を解釈するオープンソースのスクリプト エンジン (C で書かれた) です。 現在の PHP バージョンは、メモリとリソースの管理を提供する Zend Engine II を使用し、拡張可能なオブジェクト モデルと大幅なパフォーマンスの強化を言語に追加します。
新しい Zend Engine III (当初のコード名は phpng) は、PHP 7 向けに開発中です。
1.パフォーマンス + メモリ節約
PHP 7 にアップグレードする最大の理由は、そのパフォーマンスです。これは、同じハードウェア上でより多くの顧客をホストできるようになるため、特に小規模なホストにとっては朗報です。第 7 バージョンのパフォーマンスは、実行前ではなく実行時にコンパイルできる JIT (ジャストインタイム) コンパイラーを備えた Facebook HHVM と同等です。 内部データ構造の最適化により、メモリも大幅に節約されます。
推奨:プログラマーと開発者向けの 30 の素晴らしい PHP ライブラリ
Zend が公開したグラフからわかるように、PHP 5.6 の WordPress リクエストは 100M CPU 命令で実行されますが、PHP 7 では同じジョブを実行するのに 25M しか実行されません。さらに、テストの結果、同じハードウェア上で 3 倍の Magento トランザクションを実行でき、Drupal 8 は PHP 7 で 72% 高速に実行できることがわかりました。
産業技術
- CMMS インタラクティブ サイト マップとフロア プランの上位 5 つの利点
- 材料を知る:CE 221
- 製造のための設計:重要性と主要な原則
- ラインバランシング:隠された未使用容量のロックを解除する方法
- E3.seriesを使用した電気プロジェクト-ブロック図
- メーカーがデータの競争機会を最大化する方法
- 産業用冷凍および産業用冷却アプリケーション用のドライブ
- 精密旋削部品のホーニングとラッピング
- UNS スレッドの説明:意味、規格、適合クラス、および寸法チャート
- サプライチェーンLogjamでの貨物調達を改善するための3つのヒント
- 飛行時間センサー(ToF)はどのように機能しますか? ToF3Dカメラを見てください