私は Kohana 3.2 を使用していますが、それほど重要ではありませんが、返されたすべてのデータベース レコードを特定のクラスにラップするアプリケーションを作成しています。データベース行をクラスにロードする最良の方法を理解しているかどうかはわかりません。ORM モデルの場合もあれば、単なる行 ID の場合もあるためです。
したがって、コントローラーからすべてのユーザーのリストが必要な場合は、次のようになります。
コントローラ:
$users = User::find_all();
ユーザークラス
public static function find_all()
{
$users_model = ORM::factory('user')->find_all();
$users = array();
foreach ($users_model as $user_model)
{
$users[] = User::instance($user_model);
}
return $users;
}
それはうまく機能しますが、いくつかのアクションの後など、IDだけでユーザーオブジェクトをロードする必要がある場合があります。例を次に示します。
コントローラ
$user_id = $_POST['user_id'];
$user = User::instance($user_id);
ID または ORM オブジェクトが渡されたかどうかを識別しようとする責任を負う User クラスも同様です。それは適切な OOP プラクティスには適していないように思えますが、それを行う最善の方法が何であるかは本当にわかりません。私が現在行っていることは、コンストラクトにあります:
public function __construct($user, $load = 'model')
{
if ($load == 'model')
{
$this->user_model = $user;
}
if ($load == 'id')
{
$this->user_model = ORM::factory('user', $user);
}
}
しかし、それは本当に気分が悪いだけです。アドバイスをいただければ幸いです。