数据访问对象设计模式是什么?

PHP 基础面试题
0
0
分享
推荐答案
展示答案
<?php //数据访问对象设计模式描述了如何创建提供透明访问任何数据源的对象。 abstract class baseDAO{ private $_connection; public function __construct(){ $this->_connectToDB(DB_USER, DB_PASS, DB_HOST, DB_DATABASE); } private function _connectToDB($user, $pass, $host, $database){ $this->_connection = new mysqli($host, $user, $pass, $database); } public function fetch($value, $key = NULL){ if(is_null($key)){ $key = $this->_primaryKey; } $sql = "SELECT * FROM {$this->_tableName} WHERE {$key}='{$value}' "; $results = $this->_connection->query($sql); $rows = []; while($result = $results->fetch_assoc()){ $rows[] = $result; } return $rows; } public function update($keyedArray){ $sql = "UPDATE {$this->_tableName} SET "; $updates = []; foreach($keyedArray as $column => $value){ $updates[] = "{$column}='{$value}' "; } $sql .= implode(',', $updates); $sql .= "WHERE {$this->_primaryKey}='{$keyedArray[$this->_primaryKey]}'"; return $this->_connection->query($sql); } } class userDAO extends baseDAO{ protected $_tableName = 'userTable'; protected $_primaryKey = 'id'; public function getUserByFirstName($name){ $result = $this->fetch($name, 'firstName'); return $result; } } define('DB_USER', 'root'); define('DB_PASS', ''); define('DB_HOST', '127.0.0.1'); define('DB_DATABASE', 'test'); $user = new userDAO(); $userDetailsArray = $user->fetch(1); print_r($userDetailsArray); echo PHP_EOL; $updates = ['id' => 1, 'firstName' => 'aaron']; $updateResult = $user->update($updates); print_r($updateResult); echo PHP_EOL.PHP_EOL; $allAarons = $user->getUserByFirstName('aaron'); print_r($allAarons);

答案已隐藏