整理一下本身的学习Aaron Saray 写的PHP设计模式一些demo和本身的理解。大佬看完若是发现鄙人理解有误请当即指出,感谢拍砖,跪求鞭打mysql
/** * DAO (Data Access Objects) 数据访问对象 * ------------------------------------- * ** 来自说明 ** * * 数据访问对象设计模式描述了如何建立提供透明访问任何数据源的对象 * * 目的是解决下列两种特定的问题: * 1. 重复 * 2. 数据源抽象化 * 数据访问对象模式提供数据库抽象层 * 如今,应用程序的主要处理代码再也不考虑数据库引擎或表关系 * 调用这种对象的公共方法会返回任何数据类型,不用考虑内在SQL所需的类型 * * ===================================== * ** 应用场景 ** * * 数据访问 * * ------------------------------------- * * @version ${Id}$ * @author Shaowei Pu <54268491@qq.com> */
abstract class baseDao{ /** * [$_connection 链接对象] * @var [type] */ private $_connection; /** * [__construct 实例化数据库链接] * @author Shaowei Pu <pushaowei@sporte.cn> * @CreateTime 2017-02-22T17:52:04+0800 */ public function __construct(){ try{ $this->_connection = new \PDO("mysql:dbname=mysql;host=localhost","root","pushaowei"); $this->_connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ die('error:'.$e->getMessage()); } } /** * [feach description] * @author Shaowei Pu <pushaowei@sporte.cn> * @CreateTime 2017-02-22T18:01:48+0800 * @return [type] [description] */ public function fetch( $value , $key = ''){ // SQL START $sql = 'SELECT * FROM '.$this->_tablename.' WHERE '.$key.' = "'.$value.'"'; // 输出 $dispose = $this->_connection->query($sql); return $dispose->fetch(PDO::FETCH_ASSOC); } } class selectHandle extends baseDao{ /** * [$_tablename 获得表名] * @var string */ protected $_tablename = 'db'; /** * [getValue description] * @author Shaowei Pu <pushaowei@sporte.cn> * @CreateTime 2017-02-22T18:06:58+0800 * @param [type] $value [description] * @return [type] [description] */ public function getDbValue( $value ){ $result = parent::fetch( $value, 'Host' ); return $result; } } $select = new selectHandle; var_dump($select->getDbValue('localhost')); /* +---------------------------------------------------------------------- | array (size=22) | 'Host' => string 'localhost' (length=9) | 'Db' => string 'sys' (length=3) | 'User' => string 'mysql.sys' (length=9) | 'Select_priv' => string 'N' (length=1) | 'Insert_priv' => string 'N' (length=1) | 'Update_priv' => string 'N' (length=1) | 'Delete_priv' => string 'N' (length=1) | 'Create_priv' => string 'N' (length=1) | 'Drop_priv' => string 'N' (length=1) | 'Grant_priv' => string 'N' (length=1) | 'References_priv' => string 'N' (length=1) | 'Index_priv' => string 'N' (length=1) | 'Alter_priv' => string 'N' (length=1) | 'Create_tmp_table_priv' => string 'N' (length=1) | 'Lock_tables_priv' => string 'N' (length=1) | 'Create_view_priv' => string 'N' (length=1) | 'Show_view_priv' => string 'N' (length=1) | 'Create_routine_priv' => string 'N' (length=1) | 'Alter_routine_priv' => string 'N' (length=1) | 'Execute_priv' => string 'N' (length=1) | 'Event_priv' => string 'N' (length=1) | 'Trigger_priv' => string 'Y' (length=1) +---------------------------------------------------------------------- */