我对 OOP 比较陌生,现在正在尝试使我的网站适应 githibs 的 Safemysql https://github.com/colshrapnel/safemysql
在继续编写更多基于 OOP 的代码之前,我遇到了一个必须解决的谜题。
在我的网站上,我有一个管理部分,我可以在其中查询数据库用户的不同列表。我对 User 类的第一次尝试是
class User {
function __construct($user_id) {
$this->dbs = new SafeMySQL();
$this->user = $this->dbs->getRow('SELECT * FROM users WHERE id = ?i', $user_id);
}
function get_something_else() { }
function calculate_this() { }
}
foreach (array as $user_id) {
$user = new User($user_id);
}
使用第一种方法告诉我,如果我有一页包含数百个结果,我将创建尽可能多的连接,因此我想到了另外两种使用我的用户类的方法:
class User {
function __construct() {
$this->dbs = new SafeMySQL();
}
function load_user($user_id) {
$this->user = $this->dbs->getRow('SELECT * FROM users WHERE id = ?i',$user_id);
$return $this->user
}
function get_something_else() { }
function calculate_this() { }
}
$data = new User();
foreach (array as $user_id) {
$user = data->load_user($user_id);
}
我使用这个类没有问题,但我一直认为我会错误地定义一个变量,该变量将为另一个用户保留。
我想到的另一种选择是定义我的连接,然后将它用于这样的类, $user = new User($user_id, $connection)
但现在它看起来并不整洁。
现在我了解了全局连接和持久连接,但有些人不推荐它们。
编写我的用户类的最佳方式是什么?