PHP Design Patterns - DAO (Data Access Objects) Data Access Object Patterns

Keywords: Linux SQL PDO Database MySQL

Tidy up your study Aaron Saray Write some demo s of PHP design patterns and their own understanding. If you find that your contempt has misunderstood, please point out immediately. Thank you for patting bricks and kneeling for whipping.

/**
 * DAO (Data Access Objects) Data Access Objects
 * -------------------------------------
 * ** From Explanation**
 *
 * Data Access Object Design Patterns describe how to create objects that provide transparent access to any data source
 *
 * The aim is to solve the following two specific problems:
 * 1. Repetition
 * 2. Data source abstraction
 * Data Access Object Schema Provides Database Abstraction Layer
 * Now, the application's main processing code no longer considers database engines or table relationships
 * Calling the common method of this object returns any data type, regardless of the type required by the inherent SQL
 * 
 * ===================================== 
 * ** Application Scenarios**
 *
 * Data access
 * 
 * -------------------------------------
 * 
 * @version ${Id}$
 * @author Shaowei Pu <54268491@qq.com>
 */


abstract class baseDao{
    /**
     * [$_connection Connection object]
     * @var [type]
     */
    private $_connection;

    /**
     * [__construct Instantiate database connection]
     * @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.'"';
        // output
        $dispose = $this->_connection->query($sql);
        return $dispose->fetch(PDO::FETCH_ASSOC);        
    }

}
class selectHandle extends baseDao{
    /**
     * [$_tablename Get the table name]
     * @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)
+----------------------------------------------------------------------
*/



Posted by chigley on Tue, 12 Feb 2019 18:27:19 -0800