php中的設計模式中有很多的各種模式了,在這裡我們來為各位介紹一個不常用的資料映射模式吧,有興趣的朋友一起看吧
資料映射模式使您能更好的組織您的應用程式與資料庫互動。
資料對映模式將物件的屬性與儲存它們的表格欄位間的結合密度降低。資料映射模式的本質就是一個類,它映射或是翻譯類的屬性或是方法到資料庫的相應字段,反之亦然。
資料映射的作用(工作)就在於能對雙方所呈現出的資訊的理解,並能對資訊的存取進行控制,如根據儲存在資料表中的資訊
重建新的網域對象,或用網域對象的資訊來更新或刪除資料表中的相關資料。
對於物件導向程式碼與資料庫表格和欄位間的對應關係的儲存有多種實作方式。其中一種可能的方法就透過手動編碼將這種映射關係儲存在資料映射類別中。
另一種可選的方法是用PHP的陣列並將其編碼為類別本身。這個類別也能外源取得數據,如INI或是XML檔。
資料物件映射模式,是將物件和資料儲存映射起來,對一個物件的操作會映射為資料儲存的操作。
在程式碼中實作資料物件映射模式,實作一個ORM類,將複雜的sql語句映射成物件屬性的操作。物件關係映射(Object Relational Mapping,ORM)
ha_cl表
Hacl.php
<?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
<?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 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]; } }
#.. .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中文網其他相關文章!