Ethnaな私が今日から始めるrhaco
PHP界きっての変態フレームワークで有名なrhacoですが,本日からひょんなことがきっかけで触り始めました.*1
今注目されつつあるので,入門したいーという方の参考になれば幸いです.
そんなわけで,Lingrでtokushimaさんから直接チュートリアルされながらrhacoのおいしいところをちょくちょくつまみ食いしてきました.
で,本家のチュートリアルはtrunkでは動かないかもしれないとかなので,注意が必要とのことw
それと,rhacoな人がrhacoはコード補完がなきゃやってらんねぇと言ってたので,オススメに乗ってeclipseもついでに入れました.*2
その手順も載せておきます.
eclipse PDT all-in-one のインストール
上記URLから,Release Build→Winのall-in-oneをダウンロードし,適当なところに保存.Javaが動く環境がないとダメです.
subclipseをインストール
これは,Page not found · GitHub Pagesに書いてあるとおりです.
rhacoをPHPプロジェクトとしてチェックアウト
rhacoのセットアップ部分がPage not found · GitHub Pagesとちょっと違うので,注意.
ウィザードを使って,PHPプロジェクトとしてチェックアウトする
rhacoでプロジェクトを作る
まぁとりあえず,Page not found · GitHub Pagesのとおり,投票機能を作ることにする.
setup.phpをpoll/にコピー
バッテン印がついてるのは,HTMLがなんかちょっとおかしかったからです.このチュートリアル中に修正されてコミットされましたww
画像は,ペースト後.
サンプルアプリの中を見てrhacoをちょっと知った気になる
sample.php
生成された,sample.phpは,以下のようになっています
<?php include_once("__init__.php"); Rhaco::import("generic.Flow"); Rhaco::import("tag.feed.FeedParser"); $flow = new Flow(); $url = $flow->getVariable("url","http://www.rhaco.org"); $flow->setVariable("url",$url); $flow->setVariable("items",FeedParser::getItem($url)); $flow->write("sample_template.html");
$flow = new Flow();
これが,テンプレートパーサとリクエスト処理をまかなうやつ.*3
$flow->setVariable("url",$url);
これが,テンプレートの変数にセットするやつ.Smartyならassignですね.
$flow->write("sample_template.html");
これが,出力です.Smartyのdisplay と同じ.
テンプレート
全部張ると長いので大事なトコだけ.
<rt:loop param="items" var="item"> <div class="item"> <a href="{$item.link}">{$item.title}</a> <div class="date">[{$item.getPubDate('Y/m/d')}]</div> <pre> {$f.xml2html($item.description)} </pre> </div> </rt:loop>
rt: でrhacoのテンプレート構文が始まる.loopはsmartyのforeachと同じで,パラメータをうけとって,ループする.
{$f.xml2html($item.description)}
大体そんなところ
setup.php で rhacoのパスをいれた段階で,__settings__.php というのが,生成されますが,これはリリース時には含めません.
これは環境に依存するセッティングファイルが書いてあるので,リリース時には,setup.phpを実行して,リリース先のサーバでセットアップしなおします.*6
さて
今日はここまで.
...あれ?poll実装してないぞ?w
*1:前からPHPの素敵な変な子にはゴリ押しされてたわけですが.キッカケって大事ですね!
*3:[http://www.lingr.com/room/rhaco/archives/2008/02/03#msg-25346882:title]
*4:[http://www.lingr.com/room/rhaco/archives/2008/02/03#msg-25347440:title]
*5:[http://d.hatena.ne.jp/riaf/20070907/1189169818:title]
*6:[http://www.lingr.com/room/rhaco/archives/2008/02/03#msg-25349440:title]