標識對映在資料對映器的基礎上增加了標識對映類,主要功能是儲存已經建立好的物件,在需要的時候可以直接獲取而不是重複建立造成系統效能的下降。
在資料對映器基礎上還增加了部分呼叫標識對映類的方法,示例**如下:
namespace woo\domain;
//標識對映類
class objectwatcher
static function instance()
return self::$instance;
} //獲取乙個唯一的標識,這裡採用了領域類類名+id的方式建立乙個唯一標識,避免多個資料庫表呼叫這個類時出現id重複的問題
function globalkey(domainobject $obj)
//新增物件
static function add(domainobject $obj)
//獲取物件
static function exists($classname,$id)
return null;
}}namespace woo\mapper;
abstract class mapper
self::$pdo = new \pdo($dsn);
self::$pdo->setattribute(\pdo::attr_errmode,\pdo::errmode_exception);
}}
//資料對映器基礎上新增的方法以下會簡稱新增,這裡的作用的是獲取物件而不是查詢資料庫並重複建立物件
//(對比一下原資料對映器的相關**即可了解)
private function getfromap($id)
//新增,這裡的作用的是將建立的物件儲存起來
private function addtomap(\woo\domain\domainobject $obj)
//對比原資料對映器的**,便發現它不是直接建立物件而是首先在標識對映類中查詢,找不到才呼叫的
//子類的方法建立並插入到標識對映類,下面的find方法也遵循了這一原則
function createobject($array) //新增
$obj = $this->docreateobject($array); //在子類中實現
$this->addtomap($obj); //新增
return $obj;
} //
function find($id) //新增
$this->selectstmt()->execute(array($id));
$array= $this->selectstmt()->fet程式設計客棧ch();
$this->selectstmt()->closecursor();
if(!is_array($array))
if(!isset($array['id']))
$object = $this->createobject($array);
$this->addtomap($object); //新增
return $object;
} function insert(\woo\domain\domainobject $obj)
//需要在子類中實現的各抽象方法
abstract function targetclass();//////
abstract function update(\woo\domain\domainobject $objet);
protected abstract function docreateobject(array $array);
protected abstract function selectstmt();
protected abstract function doinsert(\woo\domain\domainobject $object);
}class spacemapper extends mapper
}本文標題: 老生常談php物件導向之標識對映
本文位址:
老生常談PHP位運算的用途
在實際應用中可以做使用者許可權的應用 我這裡說到的許可權管理辦法是乙個普遍採用的方法,主要是使用到 位執行符 操作,位與運算子 位或執行符。參與運算的如果是10進製數,則會被轉換至2進製數參與運算,然後計算結果會再轉換為10進製數輸出。它的許可權值是這樣的 2 0 1,相應2進數為 0001 在這裡...
老生常談之CSS的垂直居中
44 年前我們就把人類送上月球了,但現在我們仍然無法在 css 中 實現垂直居中。james anderson status 358603820516917249 在 css 中對元素進行水平居中是非常簡單的 如果它是乙個行內元素,就對它的父元素應用text align center 如果它是乙個塊...
C 老生常談之訪問修飾符
很奇怪的一點是,網上搜尋了一些訪問修飾符的資料,居然有些是錯誤的。現歸納如下 類的訪問修飾符 非內部內 private 不可用 protected 不可用 protected internal 不可用 internal 限定與本assembly內 public 無限制 預設 internal 類成員...