Php (为了扩展示例,我们添加了其中一些方法)。GetUsers方法位于存储库或DAO上。该方法只返回您想要返回的内容。如果您想要返回的不仅仅是id和name,那么可以使用另一个方法来返回它。用户的意思取决于上下文。并不是只有一个用户类。每个上下文都有自己的用户

Php (为了扩展示例,我们添加了其中一些方法)。GetUsers方法位于存储库或DAO上。该方法只返回您想要返回的内容。如果您想要返回的不仅仅是id和name,那么可以使用另一个方法来返回它。用户的意思取决于上下文。并不是只有一个用户类。每个上下文都有自己的用户,php,class,object,orm,Php,Class,Object,Orm,(为了扩展示例,我们添加了其中一些方法)。GetUsers方法位于存储库或DAO上。该方法只返回您想要返回的内容。如果您想要返回的不仅仅是id和name,那么可以使用另一个方法来返回它。用户的意思取决于上下文。并不是只有一个用户类。每个上下文都有自己的用户概念。在这里,用户只是(Id,名称)Ok,所以只是总结一下。。。数据访问应该通过一个数据库接口完成,可能是一个对象,正如许多框架(例如Cake PHP)在MVC风格中所做的那样(我并不喜欢Cake PHP中的模型实现,但这是另一天的事情)。。。


(为了扩展示例,我们添加了其中一些方法)。GetUsers方法位于存储库或DAO上。该方法只返回您想要返回的内容。如果您想要返回的不仅仅是id和name,那么可以使用另一个方法来返回它。用户的意思取决于上下文。并不是只有一个用户类。每个上下文都有自己的用户概念。在这里,用户只是(Id,名称)Ok,所以只是总结一下。。。数据访问应该通过一个数据库接口完成,可能是一个对象,正如许多框架(例如Cake PHP)在MVC风格中所做的那样(我并不喜欢Cake PHP中的模型实现,但这是另一天的事情)。。。通常情况下,您不会有一个对象来表示数据库中的记录(例如,用户记录的用户对象),因为这是一种抽象形式,而不是正确的抽象形式(我当然同意这一点,因为上面示例中的db查询数量是荒谬的)。该接口旨在满足应用程序的需要。如果您需要一些用户信息(Id、名称),则方法会返回该信息。如果您需要一个完整的用户,另一个方法会返回该用户。返回的对象不会镜像数据库结构,您可以随意存储该用户。这就是为什么要使用抽象:让数据库中的东西为查询而优化,而应用程序只获取它需要的东西。持久性层实现与业务层实现分离,它们仅通过定义的接口进行通信。
$sql = 'SELECT
            u.id,
            u.name
        FROM
            users AS u
        WHERE
            u.deleted = "0000-00-00 00:00:00"';

echo '<ul>';
foreach ($db->fetch_all($sql) as $row) {
    $url = './edit/?id=' . urlencode($row['id']);
    echo '
        <li><a href="' . html($url) . '">' . html($row['name']) . '</a></li>';
}
echo '<ul>';
class user {
    private $id;
    public function __construct($id) {
        $this->id = $id;
    }
    public function name_get() {
        return $this->value_get('name');
    }
    public function admin_url_get() {
        return '/admin/user/edit/?id=' . urlencode($this->id);
    }
    public function age_get() {
        // Calculate from $this->value_get('dob'), using date_diff()
    }
    public function address_billing_get() {
        // i.e. copy returned value onto the order object during checkout
    }
    public function address_delivery_get() {
    }
    private function value_get($field) {

        $db = db_get();

        $sql = 'SELECT
                    u.' . $db->escape_field($field) . '
                FROM
                    user AS u
                WHERE
                    u.id = "' . $db->escape($this->id) . '" AND
                    u.deleted = "0000-00-00 00:00:00"';

        if ($row = $db->fetch($sql)) {
            return $row[$field];
        } else {
            exit_with_error('Cannot return "' . $field . '" for user id "' . $this->id . '"');
        }

    }
}

class user_factory {
    static function get_all() {

        $users = array();

        $db = db_get();

        $sql = 'SELECT
                    u.id
                FROM
                    user AS u
                WHERE
                    u.deleted = "0000-00-00 00:00:00"';

        foreach ($db->fetch_all($sql) as $row) {
            $users[] = new user($row['id']);
        }

        return $users;

    }
}

echo '<ul>';
foreach (user_factory::get_all() as $user) {
    echo '
        <li><a href="' . html($user->admin_url_get()) . '">' . html($user->name_get()) . '</a></li>';
}
echo '</ul>';