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