「这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战」
课程背景
- 最近完成一个项目 对于代码分层有了一丢丢了解 但是架构设计合理性上存在问题
万物看本质
基本功硬 底层知识扎实才能写出更优质的代码 才能走得更远- 作为努力奔跑的程序员 又一次的去温习 思考 设计模式等基础的php知识
- 因为掘金粑粑有奖励,所以把学习的笔记整理记录并分享了出来。
正文开始
使用过ThinkPHP Laravel等框架的时候,我们会惊艳于它的强大。根本不用写复杂的Sql,直接用面向对象的方法创建个对象,直接就能获取到数据。
1 创建数据表 并插入一条测试数据
CREATE TABLE `think_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`mobile` varchar(255) DEFAULT NULL,
`regtime` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
INSERT INTO `hz_admin_com`.`think_users`(`id`, `name`, `mobile`, `regtime`) VALUES (1, 'tom', '13312345678', '2021-11-27 21:48:56');
2 创建映射模型 \Liiy\User.php
<?php
namespace Liiy;
class User{
public $id;
public $name;
public $mobile;
public $regtime;
public function __construct($id)
{
$query = new \Liiy\Database\MySQLi();
$query->connect('192.168.2.2','hz_admin_com','admin123','hz_admin_com');
$result = $query->select(sprintf("select * from think_users where `id` = %s",$id));
$query->close();
$this->id = $result[0]['id'];
$this->name = $result[0]['name'];
$this->mobile = $result[0]['mobile'];
$this->regtime = $result[0]['regtime'];
}
}
类中根据数据库字段定义好相关的属性。并在初始化方法中获取到数据库中的数据,填充到数据模型中。这就实现了最简单的映射。 因为之前说过,尽量不是全局的用new创建对象,而是使用工厂模式去创建,单一化创建入口。我们尝试工厂模式、注册树模式、数据对象映射模式进行结合 3 工厂模式中创建方法
下一章节继续