我正在使用 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);
}
}
但这真的感觉不对。任何建议将不胜感激。