ホーム > タグ > rhaco
rhaco
rhacoはじめ
PHP用の変態フレームワークとして有名な(?)rhacoを使って「なにか」作ってみようと思います、の記録。
PHPのフレームワークは他にもいっぱいありますが、rhacoを選んだ理由としては
- レンタルサーバにいれぽんで使える
- コンソールをたたかなくても使える(web画面で設定できる!!)
- Prhagger改め、Conveyorを使ってみたい
- 変態だから
というのがあります。
cakePHPも良さそうだったのですが、すでに素晴らしい連載をされいてる方がいるので、いまさら・・・という感じでやめ。
しかし、ドキュメントが殆ど無いので、いろいろ調べるのは大変そう・・・。
どうやらrhacoは、お一人で作っているらしくドキュメントまわりをそろえるところまで、手が回っていないようです。
そこが変態たるゆえんかもしれません。
なにはなくてもチュートリアル
まずは公式サイトにあるチュートリアルのrhaco.org – easy bookmark part 2を動かしてみました。
しかし、サイト上になぜかpart 1がなく、謎です。
そしていきなり、インストールと初期セットアップはぶっ飛ばします(ぇー
なんかエラー(?)が出てるんですが・・・

いきなりチュートリアルで挫折しそうだ・・・orz
/generic/Urls.phpの34行目、preg_match(正規表現処理部分??)がエラーだぞゴラァと言っているようなので、素直にみてみます。
・/generic/Urls.phpの34行目
if(!empty($pre) && preg_match(sprintf(“/%s/”,$pre),$url,$matchs)){
ん~??デリミタ部分(太字)が違うか?
ここには「/」も対象としてはいってくるので、デリミタが「/」だとマズいのではないか、と予想。
・/generic/Urls.phpの34行目の修正(赤字)
if(!empty($pre) && preg_match(sprintf(“|%s|”,$pre),$url,$matchs)){
デリミタを「/」から「|」に変えてみます。

うぉ!エラーがとれた!!!やった!!!
んー、でもフレームワークのほうを修正してもよいものか・・・。
詳細画面と編集画面がでない
エラーは取れたものの、一覧画面と、追加画面(create)以外の詳細画面(数字のリンクをクリック)と再編集画面(updateのリンクをクリック)へ画面が遷移しません。
今度はフレームワーク側のソースではなく、設置したアプリ側のソースを見てみます。
・一覧表示用のVIEWであるindex.php
<?php
require_once(“./__init__.php”);
Rhaco::import(“generic.Urls”);
Rhaco::import(“model.Bookmark”);$parser = Urls::parser(array(
“^detail/([d]+)$”=>array(“bookmark_detail.html”,null,null,”detail”,new Bookmark()),
“^create$”=>array(“bookmark_form.html”,null,null,”create”,array(new Bookmark(),Rhaco::self())),
“^update/([d]+)”=>array(“bookmark_form.html”,null,null,”update”,array(new Bookmark(),Rhaco::self())),
“^”=>array(“bookmark_list.html”,null,null,”read”,new Bookmark()),
));
$parser->write();
?>
よくわかっていませんが、詳細画面用のテンプレートであるbookmark_detail.htmlと再編集画面用のテンプレートであるbookmark_form.htmlが入っている2行(太字)が怪しいとあたりをつけました。
さらに、ここはURLによって、処理を振り分けているんだろう??・・・ムムム!!
詳細画面のURLは
・アプリを設置したディレクトリ/detail/対応するブックマークの数字
再編集画面のURLは
・アプリを設置したディレクトリ/update/対応するブックマークの数字
それで上記の赤字部分は対応するURLへの正規表現なのではないかと予想。
となると、[d]は数字を表わしているのか?
数字って正規表現じゃ\dじゃなかったっけ??と思ったので、下記のように修正してみました。
・一覧表示用のVIEWであるindex.phpの修正(赤字部分)
<?php
require_once(“./__init__.php”);
Rhaco::import(“generic.Urls”);
Rhaco::import(“model.Bookmark”);$parser = Urls::parser(array(
“^detail/(\d+)$”=>array(“bookmark_detail.html”,null,null,”detail”,new Bookmark()),
“^create$”=>array(“bookmark_form.html”,null,null,”create”,array(new Bookmark(),Rhaco::self())),
“^update/(\d+)”=>array(“bookmark_form.html”,null,null,”update”,array(new Bookmark(),Rhaco::self())),
“^”=>array(“bookmark_list.html”,null,null,”read”,new Bookmark()),
));
$parser->write();
?>
詳細画面!!

再編集画面!!

やった!!!できましたあ!!
今日はここまでにしよう。
長かった・・・。
- Comments: 2
- Trackbacks: 0
Home > Tags > rhaco
- Search
- Feeds
- Meta
