当前位置:首页 > PHP教程 > php应用 > 列表

PHP数据对象映射模式实例分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-14 12:40:32 浏览: 评论:0 

这篇文章主要介绍了PHP数据对象映射模式,结合实例形式分析了php数据对象模式原理、定义与相关使用方法,需要的朋友可以参考下。

本文实例讲述了PHP数据对象映射模式,分享给大家供大家参考,具体如下:

将对象和数据存储映射起来,对一个对象的操作映射为对数据存储的操作。

例如在代码中new 一个对象,使用数组对象映射模式可以将对象的一些操作,比如设置一些属性,就会自动保存到数据库,跟数据库表的一条记录对应起来

在代码中实现数据对象映射模式,我们将实现一个ORM类,将复杂的SQL语句映射成对象属性的操作。同时结合工厂模式和注册模式使用

例1【例1】

数据库 test ,user 表结构:

  1. CREATE TABLE `user` ( 
  2.  `id` int(11) NOT NULL AUTO_INCREMENT, 
  3.  `namevarchar(32) CHARACTER SET utf8 DEFAULT NULL
  4.  `mobile` varchar(11) CHARACTER SET utf8 DEFAULT NULL
  5.  `regtime` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
  6.  PRIMARY KEY (`id`) 
  7. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; 

Common\User.php:

  1. <?php 
  2. namespace Common; 
  3. class User{ 
  4.   public $id
  5.   public $name
  6.   public $mobile
  7.   public $regtime
  8.   protected $db
  9.   //构造方法 
  10.   function __construct($id) { 
  11.     $this->db = new Database\MySQLi(); 
  12.     $conn = $this->db->connect('127.0.0.1''root''''test'); 
  13.     $res = $this->db->query("select * from user where id = {$id} limit 1"); 
  14.     $data = $res->fetch_assoc(); 
  15.     $this->id = $data['id']; 
  16.     $this->name = $data['name']; 
  17.     $this->mobile = $data['mobile']; 
  18.     $this->regtime = $data['regtime']; 
  19.   } 
  20.   //析构方法 
  21.   function __destruct() { 
  22.     $this->db->query("update user set name = '{$this->name}', mobile = '{$this->mobile}', regtime = '{$this->regtime}' where id = {$this->id} limit 1"); 
  23.   } 

Common\Databases\MySQLi.php

  1. <?php 
  2. namespace Common\Database; 
  3. use Common\IDatabase; 
  4. class MySQLi implements IDatabase{ 
  5.   protected $conn
  6.   function connect($host$user$passwd$dbname){ 
  7.     $conn = mysqli_connect($host$user$passwd ,$dbname); 
  8.     $this->conn = $conn
  9.   } 
  10.   function query($sql){ 
  11.     $res = mysqli_query($this->conn, $sql); 
  12.     return $res
  13.   } 
  14.   function close(){ 
  15.     mysqli_close($this->conn); 
  16.   } 

入口文件 index.php

  1. <?php 
  2.  define('BASEDIR',__DIR__); //定义根目录常量 
  3.  include BASEDIR.'/Common/Loader.php'
  4.  spl_autoload_register('\\Common\\Loader::autoload'); 
  5.  echo '<meta http-equiv="content-type" content="text/html;charset=utf8">'
  6.  /* 
  7.  * 对对象属性的操作就完成了对数据库的操作 
  8.  */ 
  9.  $user = new Common\User(1); 
  10.  //读取数据 
  11.  var_dump($user->id, $user->mobile, $user->name, $user->regtime);exit(); 
  12.  $user->mobile = '13800138000'
  13.  $user->name = 'Arshavin'
  14.  $user->regtime = date("Y-m-d H:i:s",time());

Tags: PHP数据对象 PHP映射模式

分享到: