PHP
发布时间:2019-11-12 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了浅析php设计模式之数据对象映射模式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
php中的设计模式中有很多的各种模式了,在这里我们来为各位介绍一个不常用的数据映射模式吧,希望文章能够帮助到各位。
数据映射模式使您能更好的组织你的应用程序与数据库进行交互。
数据映射模式将对象的属性与存储它们的表字段间的结合密度降低。数据映射模式的本质就是一个类,它映射或是翻译类的属性或是方法到数据库的相应字段,反之亦然。
数据映射的作用(工作)就在于能对双方所呈现出的信息的理解,并能对信息的存取进行控制,如根据存储在数据表中的信息
重建新的域对象,或是用域对象的信息来更新或删除数据表中的相关数据。
对于面向对象代码与数据库表和字段间的映射关系的存储有多种实现方式。其中一种可能的方法就通过手工编码将这种映射关系存储在数据映射类中。
另一种可选的方法是用php的数组并将其编码为类本身。这个类也能外源获取数据,如INI或是XML文件。
数据对象映射模式,是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作。
在代码中实现数据对象映射模式,实现一个ORM类,将复杂的sql语句映射成对象属性的操作。对象关系映射(Object Relational Mapping,ORM)
ha_cl表
![浅析php设计模式之数据对象映射模式 浅析php设计模式之数据对象映射模式](https://files.jb51.cc/file_images/article/201603/201633103442826.png?20162310358)
php;">
db = new \Baobab\Database\Mysqli(
);
$this->db->connect('127.0.0.1','root','','test'
);
$res = $this->db->query("
SELEct * from ha_cl where id =
{$i
D}"
);
$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->haclcod
E}',ha_cl_name = '
{$this->haclnam
E}',hacls = '
{$this->hacls}'
where ID =
{$this->i
D}
limit 1"
);
}
}
Factory.php
php;">
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
php;">
php
namespace Baobab;
class Register
{
protected static $ob
jects;
static function set($alias,$ob
ject)
{
self::$ob
jects[$alias] = $ob
ject;
}
static function _unset($alias)
{
unset(self::$ob
jects[$alias]
);
}
static function get($
Name) {
return self::$ob
jects[$name];
}
}
haclname = '测试名称';
$this->test(
);
echo 'ok';
}
function test()
{
$hacl = Baobab\Factory::getHacl(13
);
$hacl->hacls = '测试内容';
}
}
$page = new Page(
);
$page->index(
);
使用工厂模式会多次创建对象Hacl,浪费资源,如果将对象作为参数传递,一方面会带来额外的使用成本,另外如果很多地方都用到这个对象很容易发生错误,因此在工厂模式中使用注册树模式来解决这个问题。
以上内容给大家介绍了php设计模式之数据对象映射模式,希望对大家有所帮助!
大佬总结
以上是大佬教程为你收集整理的浅析php设计模式之数据对象映射模式全部内容,希望文章能够帮你解决浅析php设计模式之数据对象映射模式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。