February 10, 2013

FuelPHPでMySQL/PostgreSQL/SQLiteのドキュメントジェネレータを作ってみました。

ソースは、以下になります。
https://github.com/mp-php/fuel-dbdocs


以前、以下のパッケージを作りました。

FuelPHPでMySQLドキュメントを生成するパッケージを作ってみました。
http://madroom-project.blogspot.jp/2013/01/fuelphpmysql.html


MySQL以外も何とかならないものかという話がチラッとあり、Doctrine2を使って作りなおしてみました。
* テーブル情報
* インデックス情報
* ビュー情報
が生成できます。

現在、MySQL/PostgreSQL/SQLiteのみに対応しています。が、Doctrine2がOracleやSQL Serverにも対応しているので、ちょっと拡張すれば動く気はします。(検証可能な方がいらっしゃいましたら、GitHubでpull request頂ければ嬉しいです。。。)


READMEにも書いてありますが、以下、インストール方法です。

1. ソースコード一式を、DLするなりgit cloneするなりして展開します。

2. 外部ライブラリをインストールします。
$ cd fuel/packages/dbdocs
$ curl -s http://getcomposer.org/installer | php
$ php composer.phar install

ドキュメントの生成は、ブラウザとコマンドラインそれぞれに対応しています。


ブラウザからの実行は、public/index.phpにアクセスすれば、わかると思います。


コマンドラインからの実行ですが
$ php oil r dbdocs:help
でヘルプが表示されます。


ドキュメントの生成メソッドは、以下になります。(ヘルプより。)
php oil refine dbdocs:mysql  <directory>
php oil refine dbdocs:pgsql  <directory>
php oil refine dbdocs:sqlite <directory>
"directory"は生成されるドキュメントのディレクトリで、絶対パスになります。-fをつけると、既存ディレクトリを削除した後、再度生成します。

DB接続情報は対話式で入力します。また、-nオプションを付けることで非対話式の実行も可能です。CIサーバなどでの自動実行を想定した機能です。その際、DB接続情報は全てオプション式で、併せて入力します。

以下、ヘルプより。
MySQL and PostgreSQL:
  --host=<host>
  --dbname=<dbname>
  --user=<user>
  --password=<password>
  --charset=<charset>

SQLite:
  --path=<path>
  --charset=<charset>

カラムのコメントの加工や、カラム名からの外部キー判定の機能はpackages/dbdocs/config/dbdocs.phpに無名関数な設定値にしてあるので、本体側を修正すること無くカスタマイズできます。


最後に、補足ですが
* ドキュメントの生成機能は"dbdocs"パッケージとしてまとめてあります。
* デザイン周りはお決まりのTwitter Bootstrapです。
* Travis CIでPHP5.3/5.4/5.5 x MySQL/PostgreSQL/SQLiteの計9通りの環境でユニットテストを実行しています。
* ちょこっとAjax使っています。(FieldSetの切り替え。)
* ビュー情報の表示でsql-formatterを使っています。


Doctrine2のオブジェクトからHTMLを生成する際、ViewModelが役に立ったなー。

--

2012/02/11 補足。

大切なことを書き忘れていました。設定で、webfontの指定ができますw
1.0-alphaブランチは非対応(生成されるドキュメント側は対応済み)ですが、masterブランチで対応済みです。

--

関連:
PHPでSQLを整形するライブラリ"sql-formatter"
http://madroom-project.blogspot.jp/2013/02/phpsqlsql-formatter.html

Travis CIでComposer installする時にGitHubのAPI上限エラー
http://madroom-project.blogspot.jp/2013/02/travis-cicomposer-installgithubapi.html

ComposerでDoctrine 2のインストールメモ
http://madroom-project.blogspot.jp/2013/02/composerdoctrine-2.html

FuelPHPでMySQLドキュメントを生成するパッケージを作ってみました。
http://madroom-project.blogspot.jp/2013/01/fuelphpmysql.html

No comments:

Post a Comment