CodeIgniter2 にも慣れてきたが,やはりデータベース周りが少し物足りないので,派生である Kohana (v3) も試してみる。CI や他のフレームワークとの違いについては,参考リンクにあるページで紹介されているので割愛する。
設置
まずはソースコードをダウンロードしてくる。
早速サーバに配置する。サーバ OS が Unix 系の場合は,Web サーバが application/{cache,logs} に書き込みできるようにパーミッションを与える。そしてWeb ブラウザでアクセスすると,次のような画面が表示される。
動作環境は問題ないようだ。「Remove or rename the install.php file now.」と言っているので,install.php を削除する。再度アクセスすると,次のようなエラーが表示される。
ReflectionException [ -1 ]: Class controller_**** does not exist
これは設定ファイルで base_url を指定していないからである。このエラーを解消するために,application/bootstrap.php を開いて,base_url に Kohana を設置したディレクトリの URL を設定する。自動的に取得するようにしたければ,次のようにすれば良い。
Kohana::init(array(
'base_url' => (strtolower(@$_SERVER['HTTPS']) == 'on' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']),
));
再度アクセスしてみると,無事「hello, world!」が表示される。
データベースの使用
次に MySQL のデータベースにアクセスしてみる。
まず,テスト用の MySQL データベースを用意し,phpMyAdmin などで次のテーブルを作っておく。
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL auto_increment,
`username` varchar(30) NOT NULL,
`password` varchar(40) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
設定ファイル (modules/database/config/database.php) で database のユーザ名などを設定する。
return array
(
'default' => array
(
'type' => 'mysql',
'connection' => array(
:
'hostname' => 'localhost',
'database' => '<データベース名>',
'username' => '<ユーザ名>',
'password' => '<パスワード>',
database モジュールを読み込むように application/bootstrap.php を書き換える。
Kohana::modules(array(
:
'database' => MODPATH.'database', // Database access
:
));
データベースに行を挿入するコードをコントローラ (application/classes/controller/welcome.php) に追加する。
public function action_index()
{
DB::insert('users', array('id', 'username', 'password'))->values(array('taro', 'Taro Yamada', '1234'))->execute();
$this->request->response = 'hello, world!';
}
設置した URL にアクセスし,phpMyAdmin 等でテーブルを確認すると,以下のようにデータが追加されている。
とりあえず今日はここまで。
参考ページ
- PHP FW Kohanaを使う – both sides now
- Kohana と CodeIgniter の違い – make world
- CakePHP、CodeIgniter、Kohanaを使ってみた – kouki_mの日記
- KohanaでORMライブラリを利用する – ele_eelの日記
- CI Kohana対応表
- Unofficial Kohana 3.0 Wiki
コメント