ホームページ  >  記事  >  バックエンド開発  >  PHPパーサーの使い方

PHPパーサーの使い方

WBOY
WBOYオリジナル
2022-07-26 15:58:582157ブラウズ

「php parser」は、テンプレートコードを生成したり、生成された抽象構文ツリーを静的解析に使用したりするために使用されます。「php parser」は、nikicが開発した、使いやすさを考慮したPHP抽象構文ツリー解析ツールです。アプリケーション、構造の導入、完全なツールチェーンなど、多くの利点があります。

PHPパーサーの使い方

この記事の動作環境: Windows 10 システム、PHP バージョン 8.1、Dell G3 コンピューター

php パーサーの使用方法

PHP Parser は、nikic によって開発された PHP 抽象構文ツリー (AST) 解析ツールです。 PHP パーサーは、使いやすいインターフェイス、シンプルな構造、完全なツール チェーンなどの多くの利点も考慮しています。エンジニアリングでは、PHP Paser はテンプレート コードの生成によく使用され、PHP Paser によって生成された抽象構文ツリーは静的分析に使用されます。

PHP Parser は、ソース コードを解析するためのプロジェクトです。純粋な PHP で書かれていることは注目に値します。PHP プログラマーにとって、使い慣れた言語を使用して、静的解析などのソース コード処理を行うことができます。素晴らしい利便性。

PHP は動的言語であり、パフォーマンスが高くないため、PHP パーサーを使用して PHP コードを分析するとパフォーマンスが低下します。幸いなことに、コード分析シナリオには通常、高いパフォーマンス要件はありません。

PHP に付属の token_get_all 関数は、Zend エンジンの構文アナライザーを使用して、ソース コードを一連のトークンに分割します。これらのトークンは、多くのコード分析および処理タスクを完了するために使用できますが、トークンは構造が原始的すぎて、トラバース操作が非常に不便です。また、token_get_all 分析の結果に基づいて、有名なコード標準化ツール PHP CodeSniffer は、トークンに対して多くの処理を実行し、一連の検索およびトラバーサル インターフェイスを提供することにより、コード分析を容易にします。

PHP パーサーは、PHP コードに対応する抽象構文ツリー (AST、または抽象構文ツリー) 構造を生成し、ソース コードのトラバーサルやその他の操作を大幅に簡素化できます。

PHP パーサーの解析結果の例

次の PHP コード部分の場合:

<?php
echo &#39;Hi&#39;, &#39;World&#39;;

解析後に生成されるツリー構造は次のとおりです。

array(
    0: Stmt_Echo(
        exprs: array(
            0: Scalar_String(
                value: Hi
            )
            1: Scalar_String(
                value: World
            )
        )
    )
)

PHP パーサーによって生成される構文ツリーの構造

操作をさらに簡素化するために、PHP パーサーは言語ノード (ノード) をグループ化します。

PhpParserNodeStmt は、戻り値がなく、クラス定義などの式に現れない言語構造を含むステートメント (ステートメント) ノードです。

PhpParserNodeExpr は、次のような言語構造を含む式 (式) ノードです。戻り値があり、$var (PhpParserNodeExprVariable) や func() (PhpParserNodeExprFuncCall) などの式に含めることができます。

PhpParserNodeScalar スカラー (Scalar) ノード、次のような: 'string' ( PhpParserNodeScalarString_)、0 (PhpParserNodeScalarLNumber)、および __FILE__ (PhpParserNodeScalarMagicConstFile ) などのマジック定数は待機します。これらは式でもあり、すべて式ノードから継承されます。

名前ノード (PhpParserNodeName) やパラメーター ノード (PhpParserNodeArg) などの他のノード

任意のノード クラス名と PHP キーワード競合がある場合、ノードのクラス名はすべて _ で終わります (PhpParserNodeScalarString_ など)。

PHP パーサーでは何ができるのでしょうか?

ソース コードを抽象構文ツリーに単純に解析するだけでなく、次の機能も備えています。

コード生成。抽象構文ツリーを PHP コードに変換できます。

抽象構文ツリーと XML の間の変換

簡単に表示できるように構文ツリー構造をエクスポートします

構文ツリー構造を走査および変更するための基本クラス (ノード トラバーサーと XML)ノード ビジター)

名前空間ノード ビジターのサポート

構文ツリー トラバーサルを使用して、コードの問題を分析するプログラムを作成できます。コード生成や構文ツリー構造のトラバーサル変更などの機能と組み合わせることで、コードのリファクタリングなどを自動化できます。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPパーサーの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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