问题是你有类,然后你有数据库数据.创建对象时,如何设置对象属性以包含数据库中的数据?
我看到这样的东西,我想知道这是否真的是最好的方法.我确信这是一个相当普遍的问题,但我不知道如何处理它是最受欢迎的解决方案.
在此示例中,在创建对象时,您将id作为参数传递,然后使用id运行对数据库的查询,并将返回值分配给对象属性.我没有太多的PHP经验,也没有看到过这么多.
这是实现这一目的的可接受方式吗?有更好或更被接受的方式吗?
public function __construct($id = null){
if($id != null){
$sql = "SELECT *
FROM users
WHERE user_id = $id";
$res = Db::returnRow($sql);
// $res contains an associative array with database columns and values
if($res){
$this->user_id = $res['user_id'];
$this->user_name = $res['user_name'];
//and so on...
}
}
}
有人可以提供一些示例代码或伪代码来说明这样做的正确方法是什么?
解决方法:
这可能是一种可接受的作业方式.但建筑本身并非如此.
表示业务数据的类(示例中的用户)必须与数据库访问逻辑松散耦合.最后,充当用户的PHP类不应该知道数据来自数据库,文件或任何其他资源.接下来,您将能够在其他项目中重用您的用户php类,而无需更改任何内容!如果你有数据访问逻辑,你就会陷入困境.
结论:我建议阅读一些关于设计模式的资源(在你的情况下看看DAO模式);)提示:Head First系列中的一个非常容易访问和愉快.
标签:php,oop
来源: https://codeday.me/bug/20190527/1160736.html