如何使用 mysqli 函数将查询结果存储为类内的成员变量


How to store query results as member variables from within a class using a mysqli function?

目前我使用 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

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

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>

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

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

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