ele_eel's diary

プログラムの事を少しと、デジタル系買物記。

Kohana 3 がエレガント過ぎる

Kohana 2.3.4 での開発が一段落したので、Kohana 3(KO3)を触り始めてます。Codeigniter をベースにしたとされる 2.3.4 とはもはや別物というくらい構造が変更されているようです。

ディレクトリ構造の変更

ダウンロードしたアーカイブを解凍すると(Gitの使い方を知らず)ディレクトリ構成の簡潔さにびっくり。CakePHP とか Symfony と比べると不安になるくらいファイルが少ないです。application フォルダ内のデフォルトで利用するディレクトリも省略されているようです。system のディレクトリ構成を見ればわかるんですが、例えば

  • /application/classes/model
  • /application/messages ← Kohana コアの message メソッド用
  • /application/i18n

Validate クラスと Valid ヘルパーが統合されました。Validate クラスのメソッド message() がコアクラスへ移動したようです。ここで以前にはなかった messages ディレクトリでは Validate クラスでのデフォルトのエラー文を messages/validate.php へ記述するようになったようです。以下のように変更することも可能です。

<?php

//Validate の使用例
$post = Validate::factory($_POST)
		->filter(TRUE, 'trim')
		->rules('password', $this->_rules['password'])
		->rules('username', $this->_rules['username']);

//参照されるエラー文 messages/form_error.php
$post->errors('form_error');

// messageメソッドの使用例
// "username" を messages/text.php から取得
$username = Kohana::message('text', 'username');
// ファイルパスのみで配列データを取得
$texts = Kohana::message('text');

それから以前あった Codeigniter のような helper ディレクトリはなくなりました。クラスの記述されたファイルは classes ディレクトリに全て収められているようです。非常に見通しが良くなりました。

気になる点

今思いつくのは、Cache ライブラリの仕様が変更されたこと。Kohanaコアに統合されて簡単に使えるようになってはいるけど、ファイルベースのみで Memcache や Apc などが利用できないようです。
あと ORM モジュールの KO3 対応が完全ではないらしい。例えば many to many でピボットテーブルへデータが保存されない。フォーラムでのやりとり。今後対応するとのこと。ORM とは別に、最近では Sprig というデータベースモジュールが人気のよう。
それから Image モジュールでドライバがまだ GD しか使えないこと。

まだ試しに Auth モジュールを使ったユーザ登録/認証まで作ってみたぐらいです。細かい変更点はまだまだ把握しきれていません。それを含めて勉強します。

一通り利用してみて

やっぱり Kohana は少人数でさっと構築するのには最適。あとはデバッグ・テスト環境が充実したら最強。
それから KO3 は PHPオブジェクト指向を勉強したい人にも強くお勧めします。シンプルイズベスト。