以下是一个简单的 PHP 数据映射器模式的示例:
// 实体类
class User {
private $id;
private $username;
private $email;
// 省略构造函数、getter和setter等方法
public function getId() {
return $this->id;
}
public function getUsername() {
return $this->username;
}
public function getEmail() {
return $this->email;
}
}
// 数据映射器类
class UserMapper {
private $db;
public function __construct(Database $db) {
$this->db = $db;
}
// 从数据库中获取用户信息
public function findById($id) {
$data = $this->db->find('users', $id);
if ($data) {
return $this->mapToObject($data);
}
return null;
}
// 将数据库中的数据映射到实体对象
private function mapToObject(array $data) {
$user = new User();
$user->setId($data['id']);
$user->setUsername($data['username']);
$user->setEmail($data['email']);
return $user;
}
}
// 数据库类
class Database {
// 模拟数据库查询
public function find($table, $id) {
// 假设这里是查询数据库的逻辑,返回查询结果的关联数组
$userData = [
'id' => $id,
'username' => 'john_doe',
'email' => 'john@example.com',
];
return $userData;
}
}
// 客户端代码
$database = new Database();
$userMapper = new UserMapper($database);
$user = $userMapper->findById(1);
if ($user) {
echo "User ID: " . $user->getId() . "\n";
echo "Username: " . $user->getUsername() . "\n";
echo "Email: " . $user->getEmail() . "\n";
} else {
echo "User not found\n";
}
在这个例子中,User 类表示一个用户实体,UserMapper 类是数据映射器,负责从数据库中获取用户数据并将其映射到 User 对象。Database 类模拟了一个简单的数据库操作,用于获取用户数据。
通过使用数据映射器模式,实体对象和数据库查询的逻辑被分离,使得系统更加灵活,易于维护。这种设计模式通常用于处理对象与数据库之间的关系,提供一种对象关系映射的解决方案。
转载请注明出处:http://www.pingtaimeng.com/article/detail/11943/PHP