Blogger Information
Blog 63
fans 1
comment 0
visits 76025
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
使用静态方法的重载技术, 实现一个数据库访问类
桃儿的博客
Original
2041 people have browsed it

使用静态方法的重载技术, 实现一个数据库访问类

demo1.php文件

实例

<?php
require 'Query.php';
class Db
{
    //数据库连接对象
    protected static $pdo=null;
    //数据库连接方法,每次查询时连接,实现真正的惰性连接,节省系统开销
    public static function connection()
        {
        self::$pdo=new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
//        self::$pdo = new PDO('mysql:host=localhost;dbname=php','root','root');
        }
    //静态方法的重载
    public static  function __callStatic($name, $arguments)
    {
        //连接上数据库
        self::connection();
        //实例化查询类
        $query=new Query(self::$pdo);
        //访问Query中的方法
      return call_user_func_array([$query,$name],[$arguments[0]]);
    }

}

$cats=Db::table('category')
    ->field('cate_id,name,alias')
    ->where('cate_id>=1')
    ->select();
// 遍历查询结果
foreach ($cats as $cat){
    print_r($cat);echo'<br>';
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

Query.php文件

实例

<?php


class Query
{
    //连接对象
    public $pdo=null;
    //数据库名称
    public $table='';
    //字段列表
    public $field='';
    //查询条件
    public $where='';
    //显示数量
    public $limit=0;
    //构造方法
    public function __construct($pdo)
    {
        $this->pdo=$pdo;
    }
    //调用表名
    public function table($tableName)
    {
        $this->table=$tableName;
        //关键是这一步
        return $this;
    }
    //字段
    public function field($fields)
    {
        $this->field=$fields;
        //关键是这一步
        return $this;
    }
    //设置查询条件
    public function where($where)
    {
        $this->where=$where;
        return $this;
    }
    //设置显示数量
    public function limit($limit)
    {
        $this->limit=$limit;
        return $this;
    }
    //创建SQL语句
    public function select()
    {
        //设置查询条件
        $fields = empty($this->field) ? '*' : $this->field;
        $where = empty($this->where) ? '' : ' WHERE '.$this->where;
        $limit = empty($this->limit) ? '' : ' LIMIT '.$this->limit;
        //SQL
        $sql = 'SELECT '.$fields.' FROM '.$this->table. $where . $limit;
        // 预处理查询
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post