[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
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 –
http://www.nwiresoftware.com/ vient à l'esprit. Mais c'est commercial. – Gordon
@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. –