備忘録のため,内容の正当性については責任を持ちません。

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 等でテーブルを確認すると,以下のようにデータが追加されている。

とりあえず今日はここまで。

参考ページ

コメント

コメントする




CAPTCHA