《PHP應用:淺析php設計模式之數據對象映射模式》要點:
本文介紹了PHP應用:淺析php設計模式之數據對象映射模式,希望對您有用。如果有疑問,可以聯系我們。
php中的設計模式中有很多的各種模式了,在這里我們來為各位介紹一個不常用的數據映射模式吧,希望文章能夠贊助到各位.
PHP實例
數據映射模式使您能更好的組織你的應用程序與數據庫進行交互.
PHP實例
數據映射模式將對象的屬性與存儲它們的表字段間的結合密度降低.數據映射模式的本質就是一個類,它映射或是翻譯類的屬性或是辦法到數據庫的相應字段,反之亦然.
PHP實例
數據映射的作用(工作)就在于能對雙方所呈現出的信息的理解,并能對信息的存取進行控制,如根據存儲在數據表中的信息PHP實例
重建新的域對象,或是用域對象的信息來更新或刪除數據表中的相關數據.
PHP實例
對于面向對象代碼與數據庫表和字段間的映射關系的存儲有多種實現方式.其中一種可能的辦法就通過手工編碼將這種映射關系存儲在數據映射類中.
PHP實例
另一種可選的辦法是用PHP的數組并將其編碼為類本身.這個類也能外源獲取數據,如INI或是XML文件.
PHP實例
數據對象映射模式,是將對象和數據存儲映射起來,對一個對象的操作會映射為對數據存儲的操作.
PHP實例
在代碼中實現數據對象映射模式,實現一個ORM類,將復雜的sql語句映射成對象屬性的操作.對象關系映射(Object Relational Mapping,ORM)
PHP實例
ha_cl表PHP實例
PHP實例
Hacl.php
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實例
<?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 $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.phpPHP實例
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設計模式之數據對象映射模式,希望對大家有所贊助!PHP實例
《PHP應用:淺析php設計模式之數據對象映射模式》是否對您有啟發,歡迎查看更多與《PHP應用:淺析php設計模式之數據對象映射模式》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/7487.html