工厂模式

<?php
header('content-type:text/html;charset=utf-8');

    /**
     * 定义工厂类
     * @param  string
     * @return object
     */
    class Factory{
        public static function create($type){
            $class=$type.'DB';
            return new $class;
        }
    }

    /**
     * 定义接口
     */
    interface DB{
        public function connect();                  //链接数据库
        public function exec($sql);                    //写执行
        public function query($sql);                //读执行
        public function insert($table,$data);        //增
        public function select($table,$where);        //查
        public function delete($table,$where);        //删
        public function update($table,$data,$where);//改

    }

    /**
     * 定义子类  MysqlDB
     */
    class MysqlDB implements DB{
        public $dsn;
        
        public function __construct(){
            $this->dsn="mysql:host=localhost;dbname=study10";
        }
        /**
         * 链接数据库
         * @return obj
         */
        public function connect(){
            $pdo=new PDO($this->dsn,'root','root');
            return $pdo;
        }

        /**
         * PDO写执行
         * @param  
         * @return bool
         */
        public function exec($sql){
            return $this->connect()->exec($sql);
        }

        /**
         * PDO读执行
         * @param  $sql
         * @return array
         */
        public function query($sql){
            return $this->connect()->query($sql)->fetchAll(PDO::FETCH_ASSOC);
        }

        /**
         * Mysql添加数据
         * @param  string
         * @param  string
         * @return bool
         */
        public function insert($table,$data){
            $sql="insert into $table(uname,pwd) values($data)";
            return $this->exec($sql);
        }

        /**
         * Mysql查询数据
         * @param  string
         * @param  string $where
         * @return array
         */
        public function select($table,$where=''){
            $sql="select * from $table $where";
            return $this->query($sql);
        }

        /**
         * Mysql删除数据
         * @param  string
         * @param  string $where ]
         * @return int  修改的条数
         */
        public function delete($table,$where){
            $sql="delete from $table where $where";
            return $this->exec($sql);
        }

        /**
         * Mysql修改数据
         * @param  string
         * @param  string $where
         * @return
         */
        public function update($table,$data,$where){
            $sql="update $table set $data where $where";
            return $this->exec($sql);
        }

    }

    /**
     * 定义sqlserver 子类
     * 注意mysqli_connect_error()新特性
     */
    class SQLserverDB implements DB{
        
        public $mysqli; //定义全局变量
        public function __construct(){
            $this->mysqli = new mysqli('localhost','root','root','study10');
            if (mysqli_connect_errno()){
                die('Unable to connect!'). mysqli_connect_error();
            }
        }
        public function connect(){

        }                  
        public function exec($sql){

        }                    
        public function query($sql){
            return $this->mysqli->query($sql);
        }

        public function insert($table,$data){
            $sql="insert into $table(uname,pwd) values($data)";
            $this->query($sql);
        }    

        /**
         * Sqlserver 的查询数据
         * @param  string
         * @param  string
         * @return array
         */
        public function select($table,$where=1){
            $sql="select * from $table where $where";
            $res=array();
            $result=$this->query($sql);
            while ($a=mysqli_fetch_assoc($result)) {
                $res[]=$a;
            }
            return $res;
        }        
        public function delete($table,$where){}        
        public function update($table,$data,$where){}
    }

    /**
     * 定义 acces 子类
     */
    // class AccesDB implements DB{
    //     public function connect(){}                  
    //     public function exec($sql){}                    
    //     public function query($sql){}                
    //     public function insert($table,$data){}        
    //     public function select($table,$where){}        
    //     public function delete($table,$where){}        
    //     public function update($table,$data,$where){}
    // }

/*****************Mysql数据库*********************************************/

// $db=Factory::create('Mysql');
// $a=$db->insert('admin',"'zhangsan','123'");
// $b=$db->select('admin');
// $b=$db->delete('admin',"id='1'");
// $b=$db->update('admin',"uname='lisi'","id='2'");
//
//print_r($b);

/****************Sqlserver数据库*******************************************/
$db=Factory::create('SQLserver');
$a=$db->select('admin');
print_r($a);


?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值