PHP设计模式-DAO (Data Access Objects) 数据访问对象模式

整理一下自己的学习Aaron Saray 写的PHP设计模式一些demo和自己的理解。大佬看完如果发现鄙人理解有误请立即指出,感谢拍砖,跪求鞭打

/**
 * 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)
+----------------------------------------------------------------------
*/



    原文作者:设计模式
    原文地址: https://segmentfault.com/a/1190000008459450
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞