Quelles sont les utilisations pratiques de PHP générateur de jetons?
Quels sont pratique et au jour le jour des exemples d'utilisation de PHP générateur de jetons ?
Quelqu'un a utilisé ce?
Vous devez vous connecter pour publier un commentaire.
Quels sont pratique et au jour le jour des exemples d'utilisation de PHP générateur de jetons ?
Quelqu'un a utilisé ce?
Vous devez vous connecter pour publier un commentaire.
- Je utiliser PHP_CodeSniffer pour le style de codage de la conformité, qui est construit sur le tokeniser. Aussi, certains cadres (par exemple, Symfony 2) utiliser le tokeniser pour générer des fichiers de cache ou de la classe intermédiaire des fichiers de code PHP. Il est également possible d'utiliser le tokeniser de construire un formateur de code source ou de la coloration syntaxique.
Fondamentalement, n'importe où, vous utilisez le code PHP que vous pouvez utiliser le tokeniser. Il est beaucoup plus fiable que d'essayer d'analyser le code PHP avec les expressions régulières, ou d'autres fonctions de traitement de chaîne.
Zend
mais point de prêter à confusion, ce n'est pas le Zend Framework norme de codage. Au lieu de cela, il est un lâche et la collecte des tests ont contribué par Zend programmeurs. Ensemble, elles couvrent quelque chose comme 90% du Zend Framwork norme de codage, mais il y a des divergences (par exemple, multi-ligne les déclarations de fonction). Si vous le souhaitez, vous pouvez chercher (ou écrire votre propre) d'autres tests à faire jusqu'à 10%.Personnellement, je l'ai déjà utilisé pour construire un PHP sandbox, qui tente de créer un environnement plus sécurisé pour l'exécution des scripts PHP.
De plus j'ai fait des charges d'expériences pour prétraiter PHP, par exemple, j'ai un (incomplète) de PHP 5.3 émulateur pour PHP 5.2 appelé prephp.
Et beaucoup d'autres outils similaires, comme la source des analyseurs de code (pour l'audit de sécurité, code de style analyse, ...), utilisez le générateur de jetons ainsi.
Mais même pour les petites choses le Tokenizer peut être à portée de main. Pas seulement à grande échelle des analyseurs de code. Par exemple, si vous acceptez un tableau PHP et que vous souhaitez vérifier qu'il n'est pas malveillant, vous pouvez le faire en utilisant le générateur de jetons.
PS: Actuellement, je suis de commutation à fait l'analyse de la PHP, au lieu de simplement la segmentation, à l'aide d'un Analyseur PHP, écrit en PHP j'ai récemment publié (il fonctionne, mais n'est pas vraiment pratiquement utilisable encore).
Question intéressante.
Je n'ai pas utilisé le générateur de jetons dans la production des projets de moi-même encore, mais il y a plusieurs questions sur un Débordement de Pile à qui le tokenizer est la (ou une) réponse correcte.
Analysant automatiquement PHP pour séparer le code PHP du code HTML - extraction des commentaires de code PHP, par exemple, à la génération de la documentation (phpDocumentor fonctionne de cette façon)
Il existe des classes dans un fichier externe - l'analyse de code, voir si la classe existe à l'intérieur d'un fichier (par exemple, un plugin de gestion de système)
Permanence d'écrire des variables dans un fichier php avec php - de modifier le code source PHP les fichiers, par exemple pour remplir des variables de configuration. En utilisant le générateur de jetons woud être la première étape pour ce faire sur un analyseur de niveau.
Comment créer une liste de tous les intégrés dans les fonctions de PHP un projet fait usage de? - analyser quelles sont les fonctions utilisées dans un projet PHP
Une jolie utilisation de base est pour la coloration syntaxique.
Le jeton numéros sont généralement converties en plus agréable de noms de classe CSS bien sûr, mais vous pourriez tout simplement élaborer une feuille de style avec seulement .T_COMMENT, .T_ARRAY, .T_ELSEIF, .T_FUNCTION ... classes.
J'ai utilisé le générateur de jetons pour trouver la complexité cyclomatique nombre et quelques autres métriques de code d'un rappel:
Un de mes amis a écrit Überloader (Une force brute de l'autochargeur de PHP5.) qui utilise cette technique lors de l'indexation de fichiers de classe. Le
_check_file()
méthode à partir, il sera d'un intérêt particulier pour vous.Überloader est conçu pour les anciens projets qui n'ont pas prévu ou de la pensée au sujet de leur classe conventions de nommage de fichier ou de structures.
J'utilise la classe tous les jours dans les projets que je suis la fixation ou la rénovation.
À partir d'un commentaire dans le manuel PHP:
Vous pouvez l'utiliser pour recueillir diverses informations sur certains de code php, comme par exemple toutes les classes, les méthodes, les variables, la production de la documentation et des tâches similaires.
Je suis en train de travailler sur une Symfony 1.2 applications héritées et j'utilise le générateur de jetons pour obtenir tous les appels de
sfConfig::get()
etsfConfig::set()
.Donc, fondamentalement, je document tous les paramètres de configuration de ma demande.