Kohanaに入門してみた(1)
ここしばらくCodeIgniterを触ってみていたのですが、そこから派生したKohanaというフレームワークが良さげ。
ソースも読みやすく、慣れればちっちゃなアプリをサクッと作れそう。
というわけで、フォーラムにもある簡易ブログを作ってみました。
テンプレートエンジンにはSmartyより早い(?)らしいDwooを組み込んで使用。
何はともあれKohanaをダウンロード。
最新版の2.2をダウンロードしました。モジュールとかも一緒にダウンロードできるみたいですが、とりあえずスルー。
ダウンロードしたKohanaは、public_html/kohanaに配置しました。
DBとテーブルを作ります。
create database blog; use blog; create table entries ( id int(11) not null primary key auto_increment, title varchar(128) not null, body text ) engine=MyISAM default charset=utf8 auto_increment=1; create table comments( id int(11) not null primary key auto_increment, entry_id int(11) default null, body text, author varchar(100) default "anonymous" ) engine=MyISAM default charset=utf8 auto_increment=1; insert into entries(title, body) values("First entry", "firstfirstfirst"); insert into entries(title, body) values("Second entry", "secondsecondsecond");
データベースの設定ファイル(system/config/database.php)を修正。
ユーザー名、パスワード、DB名を自分の環境に変えます。
続いて、Dwooの組み込み。
ダウンロードはこちらから。
Kohanaへの組み込みはこちらの記事が参考になります。というかそのまま使わせてもらいました。
extensionsフォルダのcontroller.phpとview.phpをそれぞれ、application/libraryにコピーして、My_Controller.phpとMy_View.phpにリネーム(クラス名も同様)しました。
Dwooはmodules/dwoo/vendor/ 以下に配置。
後は、application/config/config.phpのモジュールに'dwoo'を追加すればdwooが使えるようになります。
ではでは最初の一覧ページを作ります。
最初にモデルを。
- models/entry.php
class Entry_Model extends ORM { protected $has_many = array('comments'); }
- models/comment.php
class Coment_Model extends ORM { protected $belongs_to = array('entry'); }
コントローラ。
- controllers/blog.php
class Blog_Controller extends Controller { public function index() { $view = new View('blog'); $view->entries = ORM::factory('entry')->orderby('id', 'desc')->find_all(); $view->render(true); } }
ビュー。
- views/blog.tpl
<p>{html::anchor('blog/add_entry', 'Add entry')}</p> {foreach $entries entry} <h1>{html::anchor('blog/view_entry/$entry->id', $entry->title)}</h1> <p>{$entry->body}</p> {/foreach}
Dwoo使えばSmartyに慣れてる人でも同じように使えて便利ですね!
テンプレートエンジン使うと、ヘルパーが書きづらくなるような気もしますが。