2010-02-23 3 views
16

Vous cherchez un logiciel qui analysera le code PHP (c'est-à-dire tout le wordpress ou le thème thématique) et me montrer de jolies images (peut-être un block diagram) de toutes les connexions pour comprendre plus rapidement où sont les choses et quelle.Existe-t-il des outils de visualisation de code PHP?

Idéalement, ce logiciel serait exécuté sur un Mac, mais je vais prendre quoi que ce soit: Windows, Linux, basée sur le Web, etc.

+7

Je pense qu'il ya quelque chose de fondamentalement mauvais au sujet de la conception de logiciels de blogging qui vous oblige à avoir un code PHP Visualiseur pour comprendre son thèmes –

+1

http://www.nwiresoftware.com/ vient à l'esprit. Mais c'est commercial. – Gordon

+0

@John pas vraiment, mais quand vous venez de commencer, il peut être difficile de vous distraire de l'enchevêtrement. J'ai souhaité quelque chose comme ça dans certains projets, mais ensuite j'ai mémorisé leurs structures moi-même. –

Répondre

1

BOUML peut faire des diagrammes UML de code existant PHP

+1

Logiciel payant: ( – sMyles

+0

@Myles L'ancienne version était libre, peut-être vous le trouvez? – powtac

4

[MISE À JOUR: Cette réponse ne gère pas les espaces de noms, donc est fondamentalement obsolète. Je vais le laisser ici au cas où quelqu'un trouverait l'approche DOT intéressante.]

Voici un moyen simple de graver l'héritage de classe en PHP. Grep pour les définitions de classe, puis transformez la sortie grep en syntaxe DOT. REMARQUE: Ce processus exigera des essais et des erreurs dans votre situation. Exécutez le grep séparément, et modifiez-le pour afficher les bonnes lignes de définition de classe avant de le placer dans le script!

Ce script était pour PHP sur standard * nix (j'ai utilisé Ubuntu), avec graphviz installé, et en utilisant grep -v pour exclure certains répertoires qui n'étaient pas intéressants parce que je regardais une base de code CakePHP. Fdp a mieux fonctionné que sfdp, dot, circo ou neato dans cette situation.

Créer generateClassHierarchy.sh

#!/bin/bash 
echo 'digraph code {' > code.dot; 
grep -r "^class " * | grep -v "^app/vendors" | grep -v "^cake/" | grep -v "Binary file" | sed 's/.*://' | sed 's/class/ /' | sed 's/ extends/-> /' | sed 's/ implements .*//' | sed 's/ \?{.*$//' | sort >> code.dot 
echo '}' >> code.dot; 
fdp -Tpng -ocode.fdp.png code.dot 2> /dev/null # Ignore syntax error 
echo "OK"; 

Ensuite, il suffit:

cd /var/www/my_app/      # or wherever 
bash ~/shell/generateClassHierarchy.sh # or wherever 
eog code.fdp.png 

Remplacer EOG avec votre visionneuse d'image préférée. J'ai exécuté cela sur Zend Framework comme un test, et a produit un graphique PNG de 22 mégaoctets. Courir sur juste Zend_Db vous montre ce (exemple sur mon site):

http://chapman.id.au/generate-php-class-inheritance-diagrams-in-graphviz

+2

gentil, merci, j'ai tweaké les choses en incluant aussi les classes abstraites le premier bit devient 'egrep -r"^(abstract class | class) " Notez que vous pouvez enchaîner plus de choses grep et grep -v pour limiter les classes sur lesquelles vous voulez opérer. – dbu

0

nWire est obsolète, ne supporte pas les dernières versions de PHP (espaces de noms). La version communautaire de Visual Paradigm est gratuite pour les projets non commerciaux, mais échoue également sur les dernières versions de PHP.

phUML est un outil gratuit très utile Il n'est plus maintenu, mais fonctionne toujours bien pour PHP 5. Les utilisateurs Mac doivent également installer graphviz.

0

Sur la base des réponses ci-dessus, il convient de faire cette distinction:

  • diagrammes de classes/méthodes de votre code PHP (analyse de code statique). C'est la chose que vous demandez. Une autre option pourrait être PHPDependencyAnalysis, il est open-source.
  • Outils de visualisation/analyse de données dotés de bibliothèques graphiques. Un outil très populaire est JGraph et ceux comme Sisense qui ont API pratique qui peut être consulté avec PHP
Questions connexes