自己做工具--封装一个DAO_PDO类

1.定义接口方法

文件: I_dao.interface.php

<?php
namespace framework\dao;
//接口用来约束一个类应该有哪些方法
//通常用来封装增删改查的方法
interface I_DAO
{
    //查询所有数据的方法
    	public function getAll($sql='');

    //查询一条记录的方法
    	public function getRow($sql='');

    //查询一个字段的值
   	 public function getOne($sql='');

    //受影响的记录数
    	public function affectedRows();

    //执行增、删、改操作的方法,通常返回成功与否
 	public function exec($sql='');

    //查询刚刚执行插入操作返回的主键的值
    	public function lastInsertId();

    //对外来数据进行引号转义、并引号包裹
    	public function quoteValue($data);
}

2.继承接口并实现这些方法

文件: DaoPDO.class.php

<?php
namespace framework\dao;
use framework\dao\I_DAO;
use \PDO;

class DAOPDO implements I_DAO
{
    //保证这个类只实例化一个对象,单例模式
    //定义私有的静态属性来保存该对象
    private static $instance;
    private $pdo;
    
    //私有的构造方法
    private function __construct($options)
    {
        //初始化数据库服务器的信息
        $this -> initOptions($options);
        //初始化PDO对象
        $this -> initPDO();
    }
    //初始化数据库服务器的配置
    private function initOptions($options)
    {
        $this -> host = isset($options['host'])?$options['host']:'';
        $this -> dbname = isset($options['dbname'])?$options['dbname']:'';
        $this -> user = isset($options['user'])?$options['user']:'';
        $this -> pass = isset($options['pass'])?$options['pass']:'';
        $this -> port = isset($options['port'])?$options['port']:'';
        $this -> charset = isset($options['charset'])?$options['charset']:'';
    }
    //初始化pdo对象
    private function initPDO()
    {
        $dsn = "mysql:host=$this->host;dbname=$this->dbname;port=$this->port;charset=$this->charset";
        $this -> pdo = new PDO($dsn,$this->user,$this->pass);
    }
    //私有的克隆方法
    private function __clone()
    {
        
    }    
    //公共的静态方法实例化当前类的对象
    public static function getSingleton($options)
    {
        if(!self::$instance instanceof self){
            self::$instance = new self($options);
        }
        return self::$instance;
    }
    //查询所有数据的方法
    public function getAll($sql='')
    {
        $pdo_statement = $this -> pdo -> query($sql); 
        //获得执行查询操作受影响的记录数
        $this -> totalRows = $pdo_statement -> rowCount();
        if($pdo_statement==false){
            //说明sql有错误,输出错误信息
            $error_info = $this -> pdo -> errorInfo();
            $error_str = "SQL语句有错误,详细信息如下:<br>".$error_info[2];
            echo $error_str;
            return false;
        }
        return $pdo_statement -> fetchAll(PDO::FETCH_ASSOC);
    }
    //查询一条记录的方法
    public function getRow($sql='')
    {
        $pdo_statement = $this -> pdo -> query($sql);
        if($pdo_statement==false){
            //说明sql有错误,输出错误信息
            $error_info = $this -> pdo -> errorInfo();
            $error_str = "SQL语句有错误,详细信息如下:<br>".$error_info[2];
            echo $error_str;
            return false;
        }
        return $pdo_statement -> fetch(PDO::FETCH_ASSOC);
    }
    //查询一个字段的值
    public function getOne($sql='')
    {
        $pdo_statement = $this -> pdo -> query($sql);
        if($pdo_statement==false){
            //说明sql有错误,输出错误信息
            $error_info = $this -> pdo -> errorInfo();
            $error_str = "SQL语句有错误,详细信息如下:<br>".$error_info[2];
            echo $error_str;
            return false;
        }
        return $pdo_statement -> fetchColumn();
    }
    //受影响的记录数
    public function affectedRows(){
        //通常是用来获得查询语句返回的所有的结果数
        return $this -> totalRows;
    }
    //执行增、删、改操作的方法,通常返回成功与否
    public function exec($sql=''){
        //返回执行成功、失败
        $result = $this -> pdo -> exec($sql);
        return $result;
    }
    //查询刚刚执行插入操作返回的主键的值
    public function lastInsertId(){
        return $this->pdo->lastInsertId();
    }
    //封装引号转义并包裹
    public function quoteValue($data)
    {
        return $this->pdo->quote($data);
    }
}




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
static int pd_eval_src_caps(struct usbpd *pd) { int i; union power_supply_propval val; bool pps_found = false; u32 first_pdo = pd->received_pdos[0]; int pdo_select = -1; u32 mv_select = 0, ma_select = 0; if (PD_SRC_PDO_TYPE(first_pdo) != PD_SRC_PDO_TYPE_FIXED) { usbpd_err(&pd->dev, "First src_cap invalid! %08x\n", first_pdo); return -EINVAL; } pd->peer_usb_comm = PD_SRC_PDO_FIXED_USB_COMM(first_pdo); pd->peer_pr_swap = PD_SRC_PDO_FIXED_PR_SWAP(first_pdo); pd->peer_dr_swap = PD_SRC_PDO_FIXED_DR_SWAP(first_pdo); val.intval = PD_SRC_PDO_FIXED_USB_SUSP(first_pdo); power_supply_set_property(pd->usb_psy, POWER_SUPPLY_PROP_PD_USB_SUSPEND_SUPPORTED, &val); /* Check for PPS APDOs */ if (pd->spec_rev == USBPD_REV_30) { for (i = 1; i < PD_MAX_DATA_OBJ; i++) { if ((PD_SRC_PDO_TYPE(pd->received_pdos[i]) == PD_SRC_PDO_TYPE_AUGMENTED) && !PD_APDO_PPS(pd->received_pdos[i])) { pps_found = true; break; } } } val.intval = pps_found ? POWER_SUPPLY_PD_PPS_ACTIVE : POWER_SUPPLY_PD_ACTIVE; power_supply_set_property(pd->usb_psy, POWER_SUPPLY_PROP_PD_ACTIVE, &val); /* First time connecting to a PD source and it supports USB data */ if (pd->peer_usb_comm && pd->current_dr == DR_UFP && !pd->pd_connected) start_usb_peripheral(pd); /* Select the first PDO (vSafe5V) immediately. */ pdo_select = select_match_pdo(pd,&mv_select,&ma_select); if (pdo_select == -1) { usbpd_dbg(&pd->dev, "%s, invaild pdo select\n",__func__); pd_select_pdo(pd, 1, 0, 0); } else { usbpd_dbg(&pd->dev, "%s, pdo_select = %d, mv= %dmV, ma = %dmA\n",__func__,pdo_select + 1,mv_select,ma_select); pd_select_pdo(pd, pdo_select + 1, mv_select * 1000, ma_select * 1000); } return 0; }代码分析
06-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值