rhacoで簡単な掲示板を作ってみる
rhacoとは?
rhacoはPHP4/5で動作するライブラリ的性質を持ったフレームワークです。
PHPの良さを失わずに、どこにでも簡単に、誰でも簡単に、柔軟性の高いWebアプリケーションの構築を行うことができるよう設計されています。
(http://rhaco.org/tutorial/overview/)
大まかな手順
2. コピーしたsetup.phpにアクセスしてrhacoのパスを入力
rhacoのパスを入力して進むとこれから作るアプリケーションの設定画面が出てきます。
とりあえずこの設定は飛ばして右上のproject.xmlリンクたどって下さい。
3. project.xmlをいじる
使用するデータベースのテーブル、コラムやアプリケーション固有の情報などを設定します。
とりあえずここではデーターベースの設定を行います。
<project rhacover="1.4.9" version="0.0.1" name="simplebbs" xmlns="http://rhaco.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://rhaco.org http://media.rhaco.org/project.xsd"> <database name="bbs" renew="true"> <table name="articles" admin="true"> <column name="name" require="true" type="string" size="50"/> <column name="comment" require="true" type="text" size="900"/> </table> </database> </project>
と入力して更新ボタンを押します。
書式はこの辺を参考に
4. 使用するデータベースと詳細を設定する
settings画面に戻ります。
データベースはSQLiteを使います。
必要な設定を行います。
データベースの設定とは別に、なにかエラーが出てもわかるように上のように設定しておきます。
ページ下部のsettingボタンを押して設定完了です。
6. コードとテンプレートを少しばかり書く
path/to/simplebbs/index.php
Articlesクラスはproject.xmlからrhacoが生成してくれたものです。
Flowクラスはテンプレートやリクエスト、セッションなどを司る便利なクラスです。
<?php include_once dirname(__FILE__) . '/__init__.php'; Rhaco::import('generic.Flow'); Rhaco::import('exception.ExceptionTrigger'); Rhaco::import('model.Articles'); Rhaco::import('database.DBUtil'); $flow = new Flow(); $dbutil = new DBUtil(Articles::connection()); if ($flow->isPost()) { $a = new Articles(); $flow->toObject($a); $dbutil->insert($a); $flow->setSession('name', $a->name); if (!ExceptionTrigger::invalid()) $flow->redirect(Rhaco::url()); } $result = $dbutil->select(new Articles()); if ($flow->isSession('name')) $flow->setVariable('name', $flow->getSession('name')); $flow->setVariable('articles', $result); $flow->write('index.html');
path/to/simplebbs/resources/templates/index.html
テンプレートです。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>bbs</title> </head> <body> <h1>bbs</h1> <rt:invalid name="exceptions" var="errors"> <rt:loop param="errors" var="err"> <p>{$f.escape($err)}</p> </rt:loop> </rt:invalid> <form action="{$rhaco.self()}" method="POST"> <input type="text" name="name" reference="true" size="40" value="{$f.escape($name)}"/>:name<br/> <textarea name="comment" reference="true" cols="40" rows="5"/>:comment<br/> <input type="submit" value="submit"/> </form> <hr> <rt:loop param="articles" var="article"> <p>name: {$f.escape($article.name)}<br/> {$f.nl2br($f.escape($article.comment))}</p> <hr> </rt:loop> </body> </html>
テンプレートの記述方法は以下を参考に。
7. 動作を確認する
simplebbs/index.phpにアクセスして試してみましょう。
成功すれば以下のように書き込めるはずです。
何も入力せずに投稿してみても、rhacoがうまいことメッセージを出してくれることを確認してみてください。
最後に
まだrhaco触りたてなので何か間違っているところがあったら教えてください><
参考にしているページ、サイト等
- http://rhaco.org/doc 公式ドキュメント
- http://rhaco.org/tutorial 公式チュートリアル
- 美の達人 | 美を極めたい方へ 中の人のブログ
- http://blog.shigepon.com/tag/snippet 逆引きrhaco
- PHP北海道 rhaco修行シリーズ
- rhaco - 肉とビールとパンケーキ by @sotarok
- WebProgを極めて居酒屋を開発する
- http://www.lingr.com/room/rhaco-ja Lingrのrhaco-ja。チャットで色々聞けるだけでなく、他の方が話している内容なども勉強になります。あとbotもいます。