老生常談PHP物件導向之標識對映

2022-10-06 08:06:12 字數 2031 閱讀 5778

標識對映在資料對映器的基礎上增加了標識對映類,主要功能是儲存已經建立好的物件,在需要的時候可以直接獲取而不是重複建立造成系統效能的下降。

在資料對映器基礎上還增加了部分呼叫標識對映類的方法,示例**如下:

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 類成員...