Home  >  Article  >  Backend Development  >  A brief analysis of the data object mapping mode of PHP design patterns, a brief analysis of the design patterns_PHP tutorial

A brief analysis of the data object mapping mode of PHP design patterns, a brief analysis of the design patterns_PHP tutorial

WBOY
WBOYOriginal
2016-07-12 08:57:481063browse

A brief analysis of the data object mapping mode of PHP design patterns, a brief analysis of the design patterns

There are many various patterns in the design patterns in PHP, here we are here to help you Let’s introduce an uncommon data mapping mode. I hope the article can help you.

Data mapping mode allows you to better organize your application to interact with the database.

The data mapping mode reduces the density of the combination between the attributes of the object and the table fields in which they are stored. The essence of the data mapping pattern is a class, which maps or translates the attributes or methods of the class to the corresponding fields of the database, and vice versa.

The role (work) of data mapping is to understand the information presented by both parties and to control the access to the information, such as based on the information stored in the data table

Rebuild a new domain object, or use domain object information to update or delete related data in the data table.

There are many ways to implement the storage of mapping relationships between object-oriented code and database tables and fields. One possible method is to store this mapping relationship in the data mapping class by hand coding.

An alternative is to use PHP arrays and encode them into the class itself. This class can also obtain data from external sources, such as INI or XML files.

The data object mapping mode maps objects and data storage. Operations on an object will be mapped to operations on data storage.

Implement the data object mapping mode in the code and implement an ORM class to map complex SQL statements into object attribute operations. Object Relational Mapping (ORM)

ha_cl table

Hacl.php

<&#63;php
namespace Baobab;
class Hacl{
public $id;
public $haclname;
public $haclcode;
public $hacls;
protected $db;
function __construct($id){
$this->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");
}
}

Factory.php

<&#63;php
namespace Baobab;
class Factory{
static function getHacl($id){
$key = 'user_'.$id;
$user = \Baobab\Register::get($key);//表中id不同表示的是不同的对象
if(!$user){
$user = new \Baobab\Hacl($id);
\Baobab\Register::set($key, $user);
}
return $user;
}
}

Register.php

<&#63;php
namespace Baobab;
class Register{
protected static $objects;
static function set($alias, $object){
self::$objects[$alias] = $object;
}
static function _unset($alias) {
unset(self::$objects[$alias]);
}
static function get($name) {
return self::$objects[$name];
}
}

index.php

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(); 

Using the factory mode will create the object Hacl multiple times, which is a waste of resources. If the object is passed as a parameter, on the one hand it will bring additional usage costs. On the other hand, if this object is used in many places, errors will easily occur, so in the factory The registration tree pattern is used in the pattern to solve this problem.

The above content introduces you to the data object mapping mode of PHP design pattern. I hope it will be helpful to you!

Articles you may be interested in:

  • PHP 5 Data Object (PDO) abstraction layer and Oracle
  • Answer several questions on PHPCHINA: URL mapping
  • Decrypt the module and operation mapping of ThinkPHP version 3.1.2
  • Mapping analysis of public function paths and configuration item paths in ThinkPHP
  • Detailed explanation of the use of Eloquent object-relational mapping in PHP's Laravel framework

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1106133.htmlTechArticleA brief analysis of the data object mapping mode of PHP design patterns. A brief analysis of the design patterns. There are many design patterns in PHP. There are various modes. Here we will introduce to you a data mapping that is not commonly used...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn