PHP设计模式(四)-数据库对象映射模式


layout: post
title: "PHP设计模式(四)-数据库对象映射模式"
date: 2016-06-06 11:24:26 +0800
comments: true
categories: [php]


1、模式定义

在了解数据映射模式之前,先了解下数据映射,它是在持久化数据存储层(通常是关系型数据库)和驻于内存的数据表现层之间进行双向数据传输的数据访问层。

数据映射模式的目的是让持久化数据存储层、驻于内存的数据表现层、以及数据映射本身三者相互独立、互不依赖。这个数据访问层由一个或多个映射器(或者数据访问对象)组成,用于实现数据传输。通用的数据访问层可以处理不同的实体类型,而专用的则处理一个或几个。

数据映射模式的核心在于它的数据模型遵循单一职责原则(Single Responsibility Principle), 这也是和 Active Record 模式的不同之处。最典型的数据映射模式例子就是数据库 ORM 模型 (Object Relational Mapper)。

ha_cl表
[图片上传失败...(image-9e012e-1532594097674)]

    db = new \Baobab\Database\Mysqli();
    $this->db->connect('127.0.0.1', 'root', '', 'test');
    $res = $this->db->query("select * from ha_cl where id = {$id}");
    $data = $res->fetch_assoc();
    $this->id = $data['ID'];
    $this->haclname = $data['ha_cl_name'];
    $this->haclcode = $data['ha_cl_code'];
    $this->hacls = $data['hacls'];
    }
    function __destruct(){
    $this->db->query("update ha_cl set
    ha_cl_code = '{$this->haclcode}',
    ha_cl_name = '{$this->haclname}',
    hacls = '{$this->hacls}'
    where ID = {$this->id}
    limit 1");
    }
    }
    //工厂模式
    
    
    class Page{
    function index(){
    $hacl = Baobab\Factory::getHacl(13);
    $hacl->haclname = '测试名称';
    $this->test();
    echo 'ok';
    }
    function test(){
    $hacl = Baobab\Factory::getHacl(13);
    $hacl->hacls = '测试内容';
    }
    }
    $page = new Page();
    $page->index(); 

你可能感兴趣的:(个人博客迁移存档)