PHP

PHPDocumentor2を使ってみた

最近のphpDocumentorはtwitter bootstrapベースでドキュメントを吐き出すようになったよ


phpDocumentor

phpDocumentorっていうと、smartyを使ったPHPマニュアルと同じ見た目のものって感じだったんだけど、久しぶりに使おうと思ったらすごくモダンになっていた。
ということで、今回はやる気を出して使ってみる。

1.チャネルを登録

$ sudo pear channel-discover pear.phpdoc.org

2.phpDocumentor2をインストール

http://www.phpdoc.org/の通り、-alphaのほうで

$ sudo pear install --alldeps phpdoc/phpDocumentor-alpha

3.コマンドラインから利用してみる

こんな感じで使ってみると。。

$ phpdoc run -t /path/to/doc/ -d /path/to/app/ -p

——————————————————————————————–
PHP Warning: DOMDocument::load(): Input is not proper UTF-8, indicate encoding !
Bytes: 0xE5 0x8A 0x5D 0x5D in /path/to/doc/structure.xml, line: XXXX in /usr/share/pear/phpDocumentor/src/phpDocumentor/Transformer.php on line 152
——————————————————————————————–
ってエラーがでた。
生成されたxmlにUTF-8以外の文字コードの文字があるよってエラーだったので(コメントとかちゃんとUTF-8で書いていたんだけどなぁ)

$ sudo vim /usr/share/pear/phpDocumentor/src/phpDocumentor/Transformer.php

でsetSource()のところを以下のように修正

$xml = new DOMDocument();

$xml = new DOMDocument(“1.0″,”UTF-8″);

で、もう一度動作させてみたけど、だめっぽい。。
じゃあもう生のXMLをUTF-8に変換するかってことでDomDocumentクラスを生成している下あたりに以下の記述を追加

$source = file_get_contents($source);
$source = mb_convert_encoding($source,'utf8','auto');

で、もう一度動かしてみる。

$ phpdoc run -t /path/to/doc/ -d /path/to/app/ -p
................................................. 49/49
. 1/1
............ 12/12
........................................... 43/43
Finished transformation in 0.88 seconds

今度は大丈夫っぽい。
今後の詳細仕様はこれベースに作っていこうかなぁ。

2012.8.22追記
この不具合はv2.0.0a3以降のものであれば修正されているようです。