目前我使用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();
这种方法看起来有点不稳定。基本上我在那里两次实例化。
我还可以将结果作为数组返回,然后循环存储每个成员变量......
是否有不同/更好的方法将类中的查询结果存储到成员变量中?
答案 0 :(得分: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>
答案 1 :(得分:0)
我想我不遵循为什么你想要在你试图实例化的对象中包含你的实例化逻辑。实质上,您要实现的是工厂模式。我认为你最好建立一个类来作为工厂来实例化这样的对象。实例化逻辑(即MySQL交互)可以在该工厂中进行。用法可能如下所示:
$model_object = mysql_factory::instantiate('ModelClass', $model_id);
如果您喜欢使用相同的确切方法,则可以使用此工厂来实例化任何类型的类(甚至是ModelClass以外的类)。没有理由将SQL交互放入您可能希望以这种方式实例化的每个类中。