この記事は、php7 の新機能をまとめたものです。参考になる内容です。困っている方は参考にしてください。お役に立てれば幸いです。
PHP7 がリリースされてから約 3 年が経過し、現在はバージョン PHP7.2.9 まで発展しています。このリリースにより、PHP のパフォーマンスが大幅に向上しました。これは主に、PHP による Zend エンジンの徹底的な最適化によるもので、システム上の PHP のリソース使用量も削減されました。
主な変更点は次のとおりです。
抽象構文ツリー
PHP の以前のバージョンでは、PHP コードは ZendVM
命令は、構文解析段階で直接生成されます。つまり、opline
命令は、コンパイラーとエグゼキューターを結合する zend_ language_parser.y
で直接生成されます。 。
抽象構文ツリーが PHP7 に追加されました。まず、PHP コードが解析されて抽象構文ツリーが生成され、次に抽象構文ツリーが ZendVM
命令にコンパイルされます。抽象構文ツリーの追加により、PHP コンパイラと実行プログラムが適切に分離されます。コンパイラは命令の生成ルールを気にする必要がありません。次に、実行プログラムは、独自のルールに従って抽象構文ツリーを対応する命令にコンパイルします。実行プログラムもまた、この命令の構文規則がどのようなものであるかに注意する必要があります。
ネイティブ TLS
ネイティブ TLS
(スレッド ローカル ストレージ) は、スレッドのリソース プールを保存するために PHP7 で使用されます。 simple 簡単に言うと、__thread
はグローバル変数の識別に使用されます。そのため、このグローバル変数はスレッド専用であり、異なるスレッドによる変更は相互に影響しません。
関数のパラメータと戻り値の型を指定する
PHP7 では、関数のパラメータと戻り値の型を指定できます。
zval 構造の変更
PHP7 は、参照カウントを特定の value
に転送します。これはより合理的です。さらに、zval
構造体のサイズも 24 バイトから 16 バイトに削減されており、これは PHP7 がシステム リソースの使用量を削減できる最適化ポイントです。
例外処理
PHP5.x の多くの操作は直接エラー エラーをスローしますが、PHP7 では、ほとんどのエラーが例外スローに変更されます。このようにして、try catch
を通じてキャプチャできます。
HashTable の変更
PHP7 の HashTable
(HashTable##) には非常に大きな変更があります。 # 構造体 サイズが 72byte から 56byte に削減され、同時に配列要素
Bucket 構造体も 72byte から 32byte に削減されます。
execute_data、
opline ストレージはレジスタを通じて実行されるため、パラメータの受け渡しによる頻繁なスタック操作が回避されると同時に、レジスタはメモリよりも高速にアクセスされます。
zend_parse_parameters() を通じて関数パラメータを解析します。PHP7 は別のメソッドで保持します。元の方法と同じですが、新しい解析方法の方が高速です。
以上がphp7の新機能のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。