### 概述
數據映射器是一種數據訪問層,它執行持久性數據存儲(通常是關系數據庫)和內存數據表示(域層)之間的數據雙向傳輸。 該模式的目標是保持內存表示和持久數據存儲相互獨立,并
保持數據映射器本身。 該層由一個或多個映射器(或數據訪問對象)組成,執行數據傳輸。 映射器實現的范圍有所不同。 通用映射器將處理許多不同的域實體類型,專用映射器將處理一
個或幾個。
### 實例
~~~
class User{
private $username;
private $email;
public function __construct($username, $email)
{
$this->username = $username;
$this->email = $email;
}
public static function fromState(array $state): User
{
return new self(
$state['username'],
$state['email']
);
}
public function getUsername()
{
return $this->username;
}
public function getEmail()
{
return $this->email;
}
}
class StorageAdapter{
private $data = [];
public function __construct(array $data)
{
$this->data = $data;
}
public function find(int $id)
{
if(isset($this->data[$id])){
return $this->data[$id];
}
return null;
}
}
class UserMapper{
private $adapter;
public function __construct(StorageAdapter $storage)
{
$this->adapter = $storage;
}
/**
* 根據ID從儲存器中找到用戶,并返回一個用戶對象
* 在內存中,通常這種邏輯使用Repository模式來實現
* 然后,中的部分是在下面的mapRowToUser()中,它將從中創建一個業務對象
* 從儲存中獲取的數據
*/
public function findById(int $id): User
{
$res = $this->adapter->find($id);
if($res === null){
throw new Exception("not found");
}
return $this->mapRowToUser($res);
}
private function mapRowToUser(array $row): User
{
return User::fromState($row);
}
}
$storage = new StorageAdapter([1=>['username'=>'jack','email'=>'7740280@qq.com']]);
$mapper = new UserMapper($storage);
$user = $mapper->findById(1);
var_dump($user instanceof User);
~~~
~~~
true
~~~
- PHP加密技術
- md5加密
- Crypt加密
- 函數
- 概述
- 強類型參數
- 可變參數列表
- 值傳遞&引用傳遞
- 變量作用域
- 可變函數
- 嵌套函數
- 遞歸函數
- 匿名函數(閉包)
- 面向對象
- 概念
- 類
- 對象的傳值
- 對象的克隆
- 構造方法
- 析構方法
- 克隆方法
- $this
- 類常量
- 靜態屬性
- 靜態方法
- 繼承
- 重寫
- 重載
- 概述
- 屬性重載
- 概述
- __set()
- __get()
- __unset()
- __isset()
- 方法重載
- 概述
- __call()
- __callstatic()
- 封裝
- 最終類
- 抽象類
- 接口
- 對象的序列化與反序列化
- __sleep()
- __wakeup()
- 其他魔術方法
- 對象的遍歷
- 類和對象相關函數
- 錯誤
- 概述
- 設置錯誤級別
- trigger_error()觸發錯誤
- 處理PHP中的錯誤
- 異常
- 概述
- 自定義異常類
- 自定義文件寫入異常類
- 記錄和發送異常信息
- 使用觀察者模式處理異常信息
- 自定義異常處理器
- 設計模式
- 創建型
- 單例模式
- 工廠模式
- 原型模式
- 結構型
- 注冊樹模式
- 適配器模式
- 數據映射模式
- 裝飾器模式
- 代理模式
- 行為型
- 策略模式
- 觀察者模式
- 迭代器模式
- 網絡
- cURL
- Oauth2.0
- QQ第三方登錄
- TCP/IP協議
- 概述
- HTTP協議
- 概述
- HTTP請求協議
- HTTP響應協議
- WebSocket
- 安裝擴展
- Redis
- Socket
- 計算機通信
- socket簡介
- PHP操作socket
- TCP
- HTTP服務端
- WebSocket
- PHP7
- 生成器yield
- 異常finally
- CGI和FPM
- php有用命令
- 內存