実践まるごとrhaco勉強会 に行ってきました。

実践まるごとrhaco勉強会 - events.php.gr.jp 行ってきました。

主催の@riafさん、@rhacoさん、会場提供頂いた@cocoitibanさん
ありがとうございました<(_ _)>

勉強会とか初参加だったのですが、楽しめました。
思ったこととか、メモしておきます。

rhacoが良いなぁ。と思うところ。

私的にはrhacoは「PHPを拡張するライブラリ+開発環境」と認識しています。

ライブラリという側面

  • 使う機能の選択権が自分にあります。
    • 一度に覚えなくてもいいんです。
    • Loggerだけ。HtmlTemplateだけ。使ってもいいわけです。
    • 多機能なクラスも提供されていますが(Viewsとか)ですが「ある一定のルールに従うことで省略して書くことが出来る機能」であって、「従うルールの意味が理解するのが難しい」ともいえます。
    • ただし、もっとシンプルなクラス(Requestとか)を組み合わせて使えば、PHPを素で使うという地点から若干ステップアップした程度の使い方もできます。

開発環境という側面

  • WebからのI/Fが用意されています。
    • rhacoを使うに当たってまず間違いなく設定が必要であろうことは、Webから簡単に設定や変更ができます。
  • DB
    • DBに(所定のXMLに書いた定義に従って)テーブルを作る。レコードを追加編集削除できる。(簡易版のphpmyadminがあるイメージ)
    • そしてこれらは、MySQLPostgreSQLSQLite に対応しています。
    • SQLiteは簡易データベースなので、PHP以外の何か?をインストールする必要もありません。ちょっと何か?を作りたいときに最適です。
  • テスト
    • テスト書くのめんどくさくないですか?
    • rhacoは「ソースにテスト内容をコメントとして埋め込む」DocTest形式に対応しています。
    • DocTestさえ書いておけば、Webから(ソースファイル単位で)テストを実行できるので、テスト成功/失敗を簡単に確認できます。
  • 他にもできることあるけど、あまり書いてもあれなので省略

あとは、

  • 和ものだから。
    • 容易にいろいろ聞けるよね。ってこと。
  • カエルだから。
    • かわいいよね!ってこと。

あえてデメリットも書いておきます。

  • 開発速度が速い。
    • ほぼ毎日、rhaco本体のソースがCommitされてます。
    • ただ、それらは新しい機能についての実装が主なので、基盤になっているクラスの変更は少ないと思います。
    • 常にアクティブなので、バグがあっても改修が早い。とも言えます。
  • ドキュメントがあまりない。
    • ここが壁になりそうですが、rhaco本体はDocTestが記述されているので、それを読めばある程度分かると思います。
    • googleとかで検索すれば、rhacoについて書いてるページがそこそこヒットしますが、古いものは動かない可能性が高いです。
    • jajaと呼ばれる、rhacoで作られたアプリケーションのリポジトリが公開されているので、サンプルとして参考になります。
    • 分からないことはlingrrhaco-jaで聞けば教えてもらえるかと。

よりライブラリちっくにrhacoを使うには。

rhacoをライブラリちっくに使うときは

include_once dirname(__FILE__) . ’/__init__.php’;

include_once("/hogehoge/Rhaco.php");
Rhaco::constant("LOG_DISP_LEVEL","deep_debug");
Rhaco::constant("LOG_DISP_HTML",true);

というように、直接Rhaco.phpをインクルードして、最低限必要なconstantを定義しても使えますよ。

もう少し詳しく説明します。

  • 通常setup.phpから設定しますが、これの設定は、/__settings__.php に保存されます。
  • /__init__.php は、/__settings__.php をインクルードするだけです。

まぁ、ソース読めば分かると思います。

firebugへの出力方法

# rhacoと関係ないですが。

たいしたことはしてません。
firebugAPIをCallしてるだけです。

<script>console.info("hoge")</script>

簡単です。詳しくは、
Firebug Command Line API