麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > PHP > 正文

淺析php設計模式之數據對象映射模式

2024-05-04 23:43:27
字體:
來源:轉載
供稿:網友

php中的設計模式中有很多的各種模式了,在這里我們來為各位介紹一個不常用的數據映射模式吧,希望文章能夠幫助到各位。

數據映射模式使您能更好的組織你的應用程序與數據庫進行交互。

數據映射模式將對象的屬性與存儲它們的表字段間的結合密度降低。數據映射模式的本質就是一個類,它映射或是翻譯類的屬性或是方法到數據庫的相應字段,反之亦然。

數據映射的作用(工作)就在于能對雙方所呈現出的信息的理解,并能對信息的存取進行控制,如根據存儲在數據表中的信息

重建新的域對象,或是用域對象的信息來更新或刪除數據表中的相關數據。

對于面向對象代碼與數據庫表和字段間的映射關系的存儲有多種實現方式。其中一種可能的方法就通過手工編碼將這種映射關系存儲在數據映射類中。

另一種可選的方法是用PHP的數組并將其編碼為類本身。這個類也能外源獲取數據,如INI或是XML文件。

數據對象映射模式,是將對象和數據存儲映射起來,對一個對象的操作會映射為對數據存儲的操作。

在代碼中實現數據對象映射模式,實現一個ORM類,將復雜的sql語句映射成對象屬性的操作。對象關系映射(Object Relational Mapping,ORM)

ha_cl表

淺析php設計模式之數據對象映射模式

Hacl.php

<?phpnamespace 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 setha_cl_code = '{$this->haclcode}',ha_cl_name = '{$this->haclname}',hacls = '{$this->hacls}'where ID = {$this->id}limit 1");}}

Factory.php

<?phpnamespace 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

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

使用工廠模式會多次創建對象Hacl,浪費資源,如果將對象作為參數傳遞,一方面會帶來額外的使用成本,另外如果很多地方都用到這個對象很容易發生錯誤,因此在工廠模式中使用注冊樹模式來解決這個問題。

以上內容給大家介紹了php設計模式之數據對象映射模式,希望對大家有所幫助!


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产九色视频在线观看 | 亚洲一区二区三区精品在线观看 | 国产91精品久久久久久久 | 一级黄色免费大片 | 91成人久久 | 亚洲免费看片网站 | 国产99久久久久久免费看 | 美国一级黄色毛片 | 欧美女优一区 | 91av资源在线 | 国产午夜精品一区二区三区四区 | 91在线视频精品 | 成年人黄色免费电影 | 久草在线手机观看 | 色网在线视频 | 成人性视频免费网站下载软件 | 看免费的毛片 | 久久国产免费视频 | 99在线啪| 欧美精品一级片 | 男女隐私免费视频 | 青青草在线免费观看 | 一级外国毛片 | 凹凸成人精品亚洲精品密奴 | 女人裸体让男人桶全过程 | 欧美性受ⅹ╳╳╳黑人a性爽 | 久久精品亚洲成在人线av网址 | 最新久久免费视频 | 一级大黄毛片 | 久久久精品视频网站 | 在线区| 综合网天天色 | 国产福利视频在线观看 | 免费观看一级淫片 | 操嫩草| 竹内纱里奈和大战黑人 | 99最新网址 | 在线播放免费播放av片 | 亚洲一区成人在线 | 国产羞羞视频在线观看 | 天天草夜夜爽 |