Question

Je voudrais construire une plus petite échelle mais les sites de documentation hightly personnalisés pour quelques projets. PhpDocumentor est assez grande, mais il est très lourd. Je pensais à essayer de modifier les modèles pour cela, mais après avoir passé seulement quelques minutes à la recherche en elle, j'ai décidé qu'il serait trop de travail.

Idéalement, je voudrais voir quelque chose à laquelle je pouvais passer un tas de fichiers et faites-le revenir tous les fichiers, les classes et les propriétés et méthodes, ainsi que leurs méta-données, afin que je puisse construire quelques modèles simples en fonction des données.

Y a-t-il des projets d'analyseur seule DocBlock qui me aider dans cette tâche, ou suis-je coincé réinventer cette roue?

Était-ce utile?

La solution

Vous pouvez faire vous-même facilement avec le API de réflexion:

/**
 * 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();

Voir ce tutoriel: http://www.phpriot.com/articles/reflection-api

Il y a aussi un paquet PEAR qui peut analyser docblocks.

Autres conseils

Dans le cas où une personne a besoin d'une expression régulière ( xdazz suggéré pour essayer et student310 a commenté cela fonctionne pour ses / ses besoins)

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

Exemple ( 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);

Il suffit de mettre à jour les réponses. Vous pouvez également consulter le projet phpDocumentor2 . Je pense que c'est analyseur PHP DocBlock peut être facilement extrait en tant que solution autonome.

signalé , je me sers phpDocumentor pendant des années comme un projet autonome et il fonctionne très bien.

<?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'));

Vous semblez vouloir un analyseur PHP qui peut exporter des détails particuliers de ce qui a été analysé.

sémantique Designs Fin PHP avant fournit un PHP complet 4/5 l'analyseur (à partir de 2016 PHP comprend 7). Il analyse le code source PHP, construit des arbres de syntaxe abstraite, estampillage chaque noeud avec des informations de localisation précises, et les met à disposition pour une utilisation ultérieure. Une chose générale, on peut faire est d'imprimer une sous-arbre arrière comme le texte original.

Dans votre cas, vous souhaitez numériser sur les arbres, trouver les classes / méthodes / propriétés (comme nœuds d'arbres) et imprimer leur texte source, ainsi que les informations de localisation. Je pense que livrerait exactement ce que vous voulez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top