Maison  >  Article  >  développement back-end  >  Comment utiliser l'analyseur PHP

Comment utiliser l'analyseur PHP

WBOY
WBOYoriginal
2022-07-26 15:58:582186parcourir

"php parser" est utilisé pour générer du code de modèle, ou utiliser l'arbre de syntaxe abstraite qu'il génère pour l'analyse statique ; "php parser" est un outil d'analyse d'arbre de syntaxe abstraite PHP développé par nikic, prenant en compte la facilité d'utilisation interface et structure brève, chaîne d'outils parfaite et de nombreux autres avantages.

Comment utiliser l'analyseur PHP

L'environnement d'exploitation de cet article : système Windows 10, PHP version 8.1, ordinateur Dell G3

Comment utiliser l'analyseur php

PHP Parser est un outil d'analyse d'arbre de syntaxe abstraite (AST) développé par nikic. PHP Parser prend également en compte de nombreux avantages tels qu'une interface facile à utiliser, une structure simple et une chaîne d'outils complète. En ingénierie, PHP Paser est couramment utilisé pour générer du code de modèle, ou l'arbre de syntaxe abstraite généré par celui-ci est utilisé pour l'analyse statique.

PHP Parser est un projet d'analyse de code source. Il convient de mentionner qu'il est écrit en PHP pur. Pour les programmeurs PHP, c'est sans aucun doute un gros avantage de pouvoir utiliser un langage qu'ils connaissent pour effectuer le traitement du code source. comme l'analyse statique pratique.

PHP est un langage dynamique et ses performances ne sont pas élevées, donc utiliser PHP Parser pour analyser le code PHP a de mauvaises performances. Heureusement, les scénarios d’analyse de code n’ont généralement pas d’exigences de performances élevées.

La propre fonction token_get_all de PHP utilise l'analyseur de syntaxe du moteur Zend pour diviser le code source en une série de jetons. Bien que ces jetons puissent être utilisés pour effectuer de nombreuses tâches d'analyse et de traitement de code, la structure des jetons étant trop primitive, le parcours et l'opération le sont. très difficile. Également basé sur les résultats de l'analyse token_get_all, le célèbre outil de standardisation de code PHP CodeSniffer facilite l'analyse du code en effectuant de nombreux traitements sur les jetons et en fournissant une série d'interfaces de recherche et de traversée.

PHP Parser peut générer la structure de l'arbre de syntaxe abstraite (AST ou Abstract Syntax Tree) correspondant au code PHP, simplifiant considérablement la traversée du code source et d'autres opérations.

Exemple de résultats d'analyse de l'analyseur PHP

Pour le morceau de code PHP suivant :

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

L'arborescence générée après l'analyse est la suivante :

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

La structure de l'arbre syntaxique généré par l'analyseur PHP

Afin de simplifier davantage l'opération, PHP Parser regroupe les nœuds de langage (Node) :

PhpParserNodeStmt est un nœud d'instruction, n'incluant aucune valeur de retour et des structures de langage qui n'apparaissent pas dans les expressions, telles que les définitions de classe ; nœud d'expression , y compris les valeurs de retour et les structures de langage qui peuvent apparaître dans les expressions, telles que $var (PhpParserNodeExprVariable) et func() (PhpParserNodeExprFuncCall), etc.

PhpParserNodeScalar scalar (Scalar), tel que : 'string' (PhpParserNodeScalarString_), 0 ( PhpParserNodeScalarLNumber) et des constantes magiques telles que __FILE__ (PhpParserNodeScalarMagicConstFile) etc. Ils sont également considérés comme des expressions, et tous sont hérités des nœuds d'expression ;

Autres nœuds, tels que : le nœud de nom (PhpParserNodeName) et le nœud de paramètre (PhpParserNodeArg)

Tout nom de classe de nœud qui entre en conflit avec les mots-clés PHP, la classe du nœud Les noms se terminent tous par _, comme PhpParserNodeScalarString_.

Que peut faire PHP Parser ?

En plus d'analyser simplement le code source dans un arbre de syntaxe abstraite, il est également livré avec les fonctionnalités suivantes :

Génération de code, qui peut convertir l'arbre de syntaxe abstraite en code PHP

Conversion entre les arbres de syntaxe abstraite et XML

Exporter la structure de l'arborescence syntaxique facile à visualiser

La classe de base pour parcourir et modifier la structure de l'arborescence syntaxique (nœud traversant et visiteur de nœud)

Prise en charge des visiteurs de nœuds d'espace de noms

En utilisant la traversée de l'arbre syntaxique, nous pouvons écrire une analyse de programme Problèmes de codes. En combinaison avec des fonctionnalités telles que la génération de code et la modification du parcours de la structure de l'arborescence syntaxique, nous pouvons automatiser la refactorisation du code et bien plus encore.

Apprentissage recommandé : "

Tutoriel vidéo PHP

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn