phpの解析プロセス

WBOY
リリース: 2016-08-08 09:23:48
オリジナル
2119 人が閲覧しました

PHP スクリプトの実行プロセスは誰もが知っています。まず、Zend エンジンが PHP ソース コードをオペコード シーケンスにコンパイルし、次に Zend VM がそれを解釈して実行します。一般的なコンパイル プロセスでは、まず字句解析と構文解析を実行してからコンパイルします。構文解析の後には、構文解析の出力である抽象構文ツリー (Abstract Syntax Tree、または AST) の概念があり、その後のコンパイル処理は AST に基づいてコンパイラによって実行されます。

しかし、PHP は特殊で、Zend エンジンは構文解析後に直接オペコードを生成し、AST を生成しません。これを行うことの最大の利点は、コンパイル プロセスが高速化されることですが、欠点は、自由度が失われ、最適化が困難になり、コンパイラ ロジックが複雑になることです。具体的には、PHP のコンパイル プロセスにおける AST の導入について説明する Wiki が PHP の公式 Web サイトにあります。もちろん、実装するのは非常に困難です。

私たちは普段 PHP のコンパイルプロセスに触れることはありませんが、日常業務では PHP_CodeSniffer、PHP_Depend、ZendStudio、PDT などの多くのツールに AST が含まれています。分析を実行するときは、多かれ少なかれ AST の助けが必要です。

図に示すように、PHP7 と php5 のコンパイル プロセスを見てみましょう


上記では、PHP の解析プロセスをさまざまな側面を含めて紹介していますが、PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート