0

目前我使用 mysqli_fetch_object('ModelClass') 用所有查询结果实例化我的类......但是......我想将我所有的“业务”逻辑保留在 model_class 中。

我试过了...

class ModelClass
{
    function __construct($model_id)
    {
         if($model_id)
         {
             //query code goes here...

             return $mysqli_result->mysqli_fetch_object('ModelClass',$model_id);
         }
    }
}

$model = new ModelClass();

这种方法似乎有点不靠谱。基本上我在那里实例化了两次类。

我还可以将结果作为数组返回,然后循环存储每个成员变量......

是否有不同/更好的方法可以将类中的查询结果存储到成员变量中?

php mysqli_fetch_object

4

2 回答 2

0

您可以将结果作为不同的类存储在单个成员变量中:

class ModelClass {
    public $result;
    function __construct($model_id)
    {
         if($model_id)
         {
             //query code goes here...

             $result = $mysqli_result->mysqli_fetch_object('ModelClassResult',$model_id);
         }
    }
}

然后你可以这样做:

$model = new ModelClass();
// Now access $model->result-><fieldname>
于 2013-09-20T16:32:16.940 回答
0

我想我不明白为什么你想在你试图实例化的对象中包含你的实例化逻辑。本质上,您要实现的是工厂模式。我认为你最好构建一个类来作为工厂来实例化这些对象。实例化逻辑(即 MySQL 交互)可以在该工厂中进行。用法可能如下所示:

$model_object = mysql_factory::instantiate('ModelClass', $model_id);

然后,如果您喜欢使用相同的确切方法,则可以使用此工厂来实例化任何类型的类(甚至是 ModelClass 以外的类)。没有理由将 SQL 交互放入您可能希望以这种方式实例化的每个类中。

于 2013-09-20T16:38:03.647 回答