Frage

Ich möchte etwas kleineren Maßstab bauen, aber hightly maßgeschneiderte Dokumentation Websites für einige Projekte. PhpDocumentor ist ziemlich groß, aber es ist sehr schwer. Ich dachte daran, zu versuchen, die Vorlagen für die zwicken, aber nach nur ein paar Minuten Zeit in sie suchen entschied ich, dass es zu viel Arbeit wäre.

Im Idealfall würde Ich mag, etwas zu sehen, zu dem ich eine Reihe von Dateien passieren könnte und habe sie alle Dateien, Klassen und Eigenschaften und Methoden geben, zusammen mit ihren Metadaten, so dass ich ein paar einfache Vorlagen bauen konnte basierend auf den Daten.

Gibt es DocBlock Parser nur für Projekte, die mir bei dieser Aufgabe helfen werden, oder sind ich fest, dass das Rad neu zu erfinden?

War es hilfreich?

Lösung

Sie können dies selbst tun einfach mit dem Reflection-API:

/**
 * This is an Example class
 */
class Example
{
    /**
     * This is an example function
     */
    public function fn() 
    {
        // void
    }
}

$reflector = new ReflectionClass('Example');

// to get the Class DocBlock
echo $reflector->getDocComment()

// to get the Method DocBlock
$reflector->getMethod('fn')->getDocComment();

Sehen Sie dieses Tutorial: http://www.phpriot.com/articles/reflection-api

Es gibt auch ein PEAR-Paket dass DocBlocks analysieren kann.

Andere Tipps

Falls jemand braucht einen regulären Ausdruck ( xdazz vorgeschlagen dies zu versuchen und student310 kommentierte er für seine / ihre Bedürfnisse) arbeitet

if (preg_match_all('/@(\w+)\s+(.*)\r?\n/m', $str, $matches)){
  $result = array_combine($matches[1], $matches[2]);
}

Beispiel ( Demo ) :

<?php
$str ='
/**    
 * @param   integer  $int  An integer
 * @return  boolean
 */
';
if (preg_match_all('/@(\w+)\s+(.*)\r?\n/m', $str, $matches)){
  $result = array_combine($matches[1], $matches[2]);
}

var_dump($result);

Sie die Antworten zu aktualisieren. Sie können auch das phpDocumentor2 Projekt zu sehen. Ich denke, dass es die PHP DocBlock Parser kann leicht als Standalone-Lösung extrahiert werden.

Wie furgas wies darauf hin, ich habe mit phpDocumentor seit Jahren als eigenständiges Projekt und es funktioniert gut.

<?php
$class = new ReflectionClass('MyClass');
$phpdoc = new \phpDocumentor\Reflection\DocBlock($class);

var_dump($phpdoc->getShortDescription());
var_dump($phpdoc->getLongDescription()->getContents());
var_dump($phpdoc->getTags());
var_dump($phpdoc->hasTag('author'));
var_dump($phpdoc->hasTag('copyright'));

Sie scheinen einen PHP-Parser zu wollen, die bestimmten Einzelheiten exportieren, was analysiert wurde.

Semantic Designs PHP-Front-End eine volle PHP bietet 4/5 Parser (ab 2016 enthält PHP 7). Es analysiert PHP-Quellcode, baut abstrakte Syntaxbäume, wobei jeder Knoten mit genauen Positionsangaben Stanzen, und macht sie zur weiteren Verwendung zur Verfügung. Eine allgemeine Sache, die es tun können, ist jede Teilstruktur zurück, als der ursprüngliche Text auszudrucken.

In Ihrem Fall, dann würden Sie wollen die Bäume abtastet, finden die Klassen / Methoden / Eigenschaften (wie Baumknoten) und deren Quelltext drucken, zusammen mit den Standortinformationen. Ich denke, das würde liefern genau das, was Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top