数据对象映射模式

概念与目的

概念: 描述如何创建提供透明访问任何数据源的对象。数据映射模式,也叫数据访问对象模式,或数据对象映射模式。

目的: 数据映射模式的目的是让持久化数据存储层、驻于内存的数据表现层、以及数据映射本身三者相互独立、互不依赖

简单例子–数据库ORM模型(Object Relational Mapper)

database.php
mysqli.php

<?php
/**
 * Created by PhpStorm.
 * User: 何晓宏
 * Date: 2018/9/30
 * Time: 0:42
 */
namespace Dataobjectmapperpattern;
interface Database{
    function connect($host, $user, $passwd, $db);
    function query($sql);
    function close();
}

<?php
/**
 * Created by PhpStorm.
 * User: 何晓宏
 * Date: 2018/9/30
 * Time: 0:42
 */
namespace Dataobjectmapperpattern;
class MySQLi implements Database{

    protected $conn;
    function connect($host, $user, $passwd, $db)
    {
        $conn=mysqli_connect($host, $user, $passwd, $db);
        $this->conn=$conn;
    }
    function query($sql)
    {
        return mysqli_query($this->conn,$sql);
    }
    function close()
    {
        mysqli_close($this->conn);
    }
}

user.php

<?php
/**
 * Created by IntelliJ IDEA.
 * User: 何晓宏
 * Date: 2018/10/10
 * Time: 15:25
 */
namespace Dataobjectmapperpattern;
class User{
    public $id;
    public $name;
    public $password;

    protected $db;

    function __construct($id)
    {
        $this->db=new MySQLi();
        $this->db->connect("127.0.0.1","root","password","test");
        $res=$this->db->query("select * from user limit 1");
        $data=$res->fetch_assoc();
        $this->id=$data['id'];
        $this->name=$data['name'];
        $this->password=$data['password'];

    }

    function __destruct()
    {
        $this->db->query("update user set name='{$this->name}',
                password='{$this->password}' where id='{$this->id}' limit 1");
    }

}
		$user=factory::getuser(1);
        //var_dump($user->id,$user->name,$user->password);
        //exit;
        $user->name='wxz';
        $user->password='123';

表结构

优点

  • 遵循单一职责原则
  • 将持久化数据存储层,驻于内存的数据表现层,以及数据映射本身三者相互独立、互不依赖
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值