ホームページ  >  記事  >  バックエンド開発  >  phpの解析プロセス

phpの解析プロセス

WBOY
WBOYオリジナル
2016-08-08 09:23:482088ブラウズ

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 チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。