Php 使用OOP管理用户

Php 使用OOP管理用户,php,mysql,oop,pdo,Php,Mysql,Oop,Pdo,我正在想办法解决这个问题。我不知道我的应用是否正确。我认为将用户对象与数据库操作分开是一件好事,这意味着用户类不应该知道如何使用数据库操作。这就是为什么我创建了另一个类UserModel(我不知道如何命名这个类),它将处理db查询并返回结果。以前,我从用户类中选择、插入、更新和删除,但我觉得责任不属于该类。为什么用户应该返回一组用户?那对我来说没有意义。 我在使用数据库时也有疑问,因为我不知道如何正确使用PDO (在本例中,我只实现了Insert查询,其他方法的实现方式与此相同。) 让我们开始吧

我正在想办法解决这个问题。我不知道我的应用是否正确。我认为将用户对象与数据库操作分开是一件好事,这意味着用户类不应该知道如何使用数据库操作。这就是为什么我创建了另一个类UserModel(我不知道如何命名这个类),它将处理db查询并返回结果。以前,我从用户类中选择、插入、更新和删除,但我觉得责任不属于该类。为什么用户应该返回一组用户?那对我来说没有意义。 我在使用数据库时也有疑问,因为我不知道如何正确使用PDO

(在本例中,我只实现了Insert查询,其他方法的实现方式与此相同。)

让我们开始吧

User.php

class User {

private $id;
private $name;
private $email;
private $username;
private $password;

//Getters & Setters
}

php(应该称为UserModel吗?)

}

Database.php

class Database {

private $pdo;

public function __construct() 
{
    $pdo = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
}

public function getPdo() {
    return $this->pdo;
}
}

users.php

$usermodel = new UserModel;
        $user = new User;
        $user->setName('John');
        $user->setEmail('john@john.com');
        $user->setUsername('john');
        $user->setPassword('1234');
        $usermodel->createUser($user);

在我看来,这是一个基于自定义的用户模型解决方案。这些对于小项目来说非常有用,因为它们非常轻量级,您可以根据自己的喜好定制它们

随着扩展,您会注意到必须为每个数据库表执行/自定义此操作,如果您有联接。。。至少可以说,事情可能会变得棘手

我建议您看看主要php框架中使用的ORM:zend、laravel、cake等

ORM基本上根据表名/主键进行自动映射。假设您可以使用一些“魔法”并失去对数据输入和数据输出的完全控制,那么通过设置我提到的两个默认值,您将拥有为添加的任何其他表中的用户对象创建的相同功能

不利的一面是您将体验到的性能冲击。下面是我提到的框架的行数/文件数的一些统计数据:


您所做的就是所谓的模式。因此,最好调用
UserModel
UserMapper
。这里的问题是什么?
$usermodel = new UserModel;
        $user = new User;
        $user->setName('John');
        $user->setEmail('john@john.com');
        $user->setUsername('john');
        $user->setPassword('1234');
        $usermodel->createUser($user);