当前位置:编程学习 > > 正文

php对象模型(PHP数据对象映射模式实例分析)

时间:2022-04-01 21:26:04类别:编程学习

php对象模型

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

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

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

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

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

例1

【例1】

数据库 test ,user 表结构:

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

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

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

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

    上一篇下一篇

    猜您喜欢

    热门推荐