最新消息:

设计模式之数据对象映射模式

PHP 492浏览 0评论

基本概念:

数据对象映射模式,是将对象和数据存储映射起来,使得对一个对象的操作就会映射到对数据存储的操作。

我们通常使用或开发的ORM 类,就是将复杂的SQL语句映射成对象属性的操作。

下面使用简单的代码实现一个数据对象映射示例:

创建数据表

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `mobile` varchar(255) NOT NULL,
  `regtime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

往表里插入一条数据

INSERT INTO user(name,mobile,regtime) VALUES('wecot', 18575654535, '2018-03-20');

新建User 类,注意类属性对应数据表字段名

class User
{
    protected $db;
    public $id;
    public $name;
    public $mobile;
    public $regtime;

    function __construct($id)
    {
        $this->db = new Mysqli();
        $this->db->connect('127.0.0.1', 'root', 'root', 'test');
        $res = $this->db->query('select * from user where id='.$id);
        $data = $res->fetch_assoc();
        $this->id = $data['id'];
        $this->name = $data['name'];
        $this->regtime = $data['regtime'];
    }

    function __destruct()
    {
        // TODO: Implement __destruct() method.
        var_dump($this->name);
        try {
            $this->db->query(
                "update user set 
                name='$this->name', regtime='$this->regtime', mobile='$this->mobile' where id=1"
            );

        } catch (\Exception $e) {
            throw new \Exception($e->getMessage());
        }
        $this->db->close();
    }
}

调用执行前,我们查看确认数据表里的数据:

image.png

调用实现

$user = new \Wecot\User(1);
//查看查询结果
var_dump($user->id, $user->name, $user->regtime);
echo "=================================".PHP_EOL;

//赋予对象新数据
$user->name = 'wecot';
$user->mobile = 18575658888;
$user->regtime = date('Y-m-d H:i:s');

var_dump($user->id, $user->name, $user->regtime, $user->name);die;

输出结果:

image.png

我们在查看数据表里的数据

image.png

如图,对应的数据已经通过操作对象而发生改变。

转载请注明:微刻 blog.wecot.cn » 设计模式之数据对象映射模式

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址