假设我有以下数据:
// Users Table
+----+-------+----------+
| ID | first | last |
+----+-------+----------+
| 1 | Al | Anderson |
| 2 | Bob | Blakely |
| 3 | Cal | Cambel |
+----+-------+----------+
和以下课程:
// Users.php
class Users {
public $first;
public $last;
...
}
我需要从查询结果中实例化用户对象并返回一个对象数组。我不知道哪种方法更好:
静态方法
在类文件中封装如下伪代码:
public static function getAll() {
$myUsers = array();
...
foreach ($results as $row) {
$user = new User();
...
$myUsers[] = $user;
}
return $myUsers;
}
并这样称呼它:
$allUsers = Users::getAll();
常规功能
像静态方法一样工作,但也许我可以重构以与其他对象一起工作......
function getAll($objType='Users') {
$myArray = new array();
...
return $myArray;
}
哪种方法更好?
我喜欢将它封装在一个类函数中,但处理静态数据库连接对象更痛苦。我喜欢简单的“帮助”功能,但这只会将 OOP 抛诸脑后。我该怎么办?
***更新:这不是 MySQLi 或 PDO 的事情。我在问(仅从 OOP 最佳实践的角度)是在类中放置一个静态的“getAllOfMyself()”方法更好,还是更好地使用像“getAllSomethings()”这样的简单函数。