15

いくつかのプロジェクト用に、規模は小さいが高度にカスタマイズされたドキュメンテーション サイトを構築したいと考えています。PhpDocumentorは非常に優れていますが、非常に重いです。そのためにテンプレートを微調整しようと考えましたが、ほんの数分調べただけで、それは大変な作業になると判断しました.

理想的には、一連のファイルを渡して、メタデータとともにすべてのファイル、クラス、プロパティ、およびメソッドを返すことができるものを見たいと思っています。データ。

この作業に役立つ DocBlock パーサーのみのプロジェクトはありますか?

4

4 に答える 4

23

これは、 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();

このチュートリアルを参照してください: http://www.phpriot.com/articles/reflection-api

DocBlock を解析できるPEAR パッケージもあります。

于 2010-03-27T22:23:22.507 に答える
6

誰かが正規表現を必要とする場合 ( xdazz はこれを試すことを提案し、 student310はそれが彼女/彼のニーズに合っているとコメントしました)

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

例(デモ

<?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);
于 2012-09-02T14:41:17.033 に答える
5

答えを更新するだけです。phpDocumentor2プロジェクトも確認してください。PHP DocBlock パーサーはスタンドアロン ソリューションとして簡単に抽出できると思います。

于 2011-10-14T18:12:15.603 に答える