PHP-Includes visualisieren mit Inclued

zend-framework

zend-framework


Ich bin ja ein großer Freund von statischer Codeanalyse und optischer Aufbereitung (siehe auch Codevisualisierung mit pfff: PHP Frontend For Fun). Nun bin ich auf was neues aufmerksam geworden: Inclued. Mittels dieses coolen Tools lassen sich Includes zwischen Dateien einer Webanwendung visualisieren – sowas kann durchaus nützlich sein, wenn man sich in eine Anwendung reinschaffen möchte oder einen Überblick erhalten will.

Installationsanleitung

Ich gehe hier von Ubuntu aus, sollte aber mit kleinen Abwandlungen auch mit anderen Distributionen gut gehen.

  1. Wir brauchen phpize, um inclued zu installieren. Das ist im php-dev Paket enthalten.
    1
    sudo apt-get install php5-dev
  2. Nun wird inclued selbst über pecl installiert:
    1
    sudo pecl install inclued-alpha
  3. Zur php.ini muss nun (am besten unter extensions) hinzugefügt werden:
    1
    2
    3
    extension=inclued.so
    inclued.enabled=1
    inclued.dumpdir=/tmp
  4. Apache restarten:
    1
    sudo apache2ctl restart
  5. Jetzt brauchen wir die gengraph.php, die inclued mitbringt. Bei mir befand sie sich in /usr/share/php/gengraph.php. Wer sie nicht findet, kann auch das PECL-Paket von dieser Seite herunterladen, da befindet sich dann die gengraph.php drin. Die habe ich nach htdocs verschoben.
  6. Zur Visualisierung des inclued-Outputs brauchen wir gengraph:
    1
    sudo apt-get install graphviz
  7. Anschließend besucht ihr die zu analysierende Webanwendung im Browser, also etwa http://localhost/codeigniter/index.php. Daraufhin generiert inclued eine Datei ins oben definierte temp-Verzeichnis. Bei mir hies sie /tmp/inclued.07565.1, der Name ist aber nicht vorhersehbar.
  8. Nun generieren wir mit der gengraph.php eine dot-Datei, die wir dann später visualisieren:
    1
    php /var/www/gengraph.php -i /tmp/inclued.07565.1
  9. Mittels
    1
    dot -Tpng -o inclued.png inclued.out.dot

    generieren wir nun eine png-Datei, die dann genauso (bzw. hoffentlich weniger komplex) aussieht, wie die unten folgenden Beispiele.

Beispiele existierender Anwendungen

CakePHP

CakePHP


CodeIgniter

CodeIgniter


Drupal

Drupal


Magento

Magento


OsCommerce

OsCommerce


phpMyAdmin

phpMyAdmin


Symfony

Symfony

Weitere Posts:

Dieser Beitrag wurde unter php, Quicktips, webdev veröffentlicht. Setze ein Lesezeichen auf den Permalink.

2 Antworten auf PHP-Includes visualisieren mit Inclued

  1. Ralph Meier sagt:

    Hi David

    Schöner Artikel

    Musste das ganze auch gerade mal ausprobieren (auch unter Ubuntu). Ich kann die ganzen Files erzeugen, aber das inclued.out.dot File hat bei mir immer den gleichen Inhalt, egal welches /tmp/inclued.* File ich nehme.

    digraph phpdeps {
    size=”6.6″;
    node [shape = ellipse];
    node [color="#add960", style=filled];
    graph [bgcolor="#f7f7f7"]; rankdir = “LR”;}

    Hast Du eine Ahnung, an was das liegen könnte?

    • david sagt:

      Servus! Genau da müssten dann eigentlich die Includes / Requires kommen. Sieht bei mir so aus:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      digraph phpdeps {
          size="6.6";
          node [shape = ellipse];
          node [color="#add960", style=filled];
          graph [bgcolor="#f7f7f7"];      rankdir = "LR";        
                  "/var/www/inctest/index.php" [label="/var/www/inctest/index.php"];
                  "/var/www/inctest/1.php" [label="/var/www/inctest/1.php"];
                  "/var/www/inctest/index.php" -> "/var/www/inctest/1.php"
                  [label = "require_once", style="solid"];           
                  "/var/www/inctest/index.php" [label="/var/www/inctest/index.php"];
                  "/var/www/inctest/2.php" [label="/var/www/inctest/2.php"];
                  "/var/www/inctest/index.php" -> "/var/www/inctest/2.php"
                  [label = "require_once", style="solid"];           
      }

      Die Sourcedatei inclued.xxxxx.x schaut so aus (serialisiertes PHP): http://i.imgur.com/mfmev.png

      Mich würds mal interessieren wie die Datei bei dir ausschaut.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>