zoukankan      html  css  js  c++  java
  • php:单例模式+简单增删改查封装

      1 <?php
      2 class six{
      3       //定义私有静态变量存储 实例化对象
      4       private static $ob;
      5       //定义表名
      6       private $table;
      7       //定义条件
      8       private $where;
      9     //定义公共pdo变量用于存储 链接数据库配置实例
     10       public $pdo;
     11       //定义私有最终构造方法 防止 继承 子类重写 ;防止直接实例化对象
     12       private function __construct()
     13        {
     14            $this->pdo = new PDO("mysql:host=127.0.0.1;dbname=blog","root","root");
     15 
     16        }
     17        //定义私有克隆 防止类外克隆
     18        private function __clone()
     19        {
     20            echo "no1";
     21        }
     22        //私有静态方法  用于实例化类对象
     23        public static function gits(){
     24                //判断如果静态属性中是否有类对象  如果没有则 实例化该类 赋予 静态属性
     25               //如此便开辟了一块静态空间用来存储实例化对象 类外只需调用一次即可  节省了资源
     26            //  实现了单例模式的作用
     27              if (!(self::$ob instanceof self)){
     28 
     29                  self::$ob = new self();
     30 
     31              }
     32 
     33              return self::$ob;
     34 
     35        }
     36 
     37        //单删 批删封装
     38       public function deleteAll($id){
     39           //判断$id 是否有值
     40         if (empty($id)){
     41 
     42             return false;
     43         }
     44           //取数组中 values值
     45           $key = array_values($id);
     46           //取得健为零值为要删除数据值的一维数组
     47           @$num = count($key[0]);
     48          //循环 数组$id
     49           foreach ($id as $k => $v){
     50                //$str = 数据库主键id字段
     51               $str = $k;
     52               // idss =  要删除的数据id
     53               $idss = $v;
     54 
     55           }
     56           $ids = ' where ';
     57           //判断 如果要删除的数据为数组并大于一条 则拼接为 id in (11,12,13)形式
     58           if (is_array($id) && $num > 1){
     59 
     60           $ids .= $str ." in " . '('.implode(",",$idss) .')';
     61            //数组等于1条(这个count)值是判断 要删除的数据个数为1
     62               //拼接成 id=1 的形式
     63        }else if (is_array($id) && count($id) == 1){
     64 
     65           $ids .= $str . ' = ' . $idss ;
     66 
     67        }
     68        //返回 实现单删多删
     69        return $this->pdo->exec("delete from $this->table $ids");
     70       }
     71 
     72       //修改
     73 
     74       public function update($data){
     75 
     76           $str = '';
     77           //循环数组拼接成 id=1,name=小明的形式
     78            foreach ($data as $k => $v){
     79 
     80                  $str .=  "," . $k .'='. "'$v'";
     81            }
     82            $str = substr($str,1);
     83 
     84       //返回数组实现修改
     85          return $this->pdo->exec("update $this->table set $str $this->where");
     86 
     87       }
     88 
     89       //定义传入的表名
     90        public function tables($table){
     91 
     92               $this->table = $table;
     93               return $this;
     94 
     95        }
     96 
     97        public function where($where){
     98 
     99                if (empty($where)){
    100 
    101                    return false;
    102                }
    103                $str = ' where ';
    104                if (is_array($where)){
    105 
    106                      foreach ($where as $k => $v){
    107 
    108                          $str .= $k .' = '. "'$v'" . ' and ';
    109                      }
    110                      $str = rtrim($str,' and ');
    111 
    112                }else{
    113 
    114                      $str .= $where;
    115 
    116                }
    117                 return $this->where = $str;
    118 
    119        }
    120 
    121    //单挑查询
    122     public function get(){
    123 
    124       return   $this->pdo->query("select * from $this->table $this->where")->fetch(PDO::FETCH_ASSOC);
    125 
    126     }
    127 
    128     //添加处理数据
    129     public function insert($data){
    130           //找到key 循环遍历成 id,name,sex 的形式
    131         $keyArr = array_keys($data);
    132         $str = '';
    133         foreach ($keyArr as $k => $v){
    134 
    135             $str .= "," . $v;
    136         }
    137         $str = substr($str,1);
    138           //找到 value 遍历成 '1','小明','男' 的形式
    139         $valArr = array_values($data);
    140         $strs = '';
    141         foreach ($valArr as $kk => $vv){
    142             $strs .= "," . "'$vv'";
    143         }
    144         $strs = substr($strs,1);
    145 
    146      // 执行则添加成功
    147        return $this->pdo->exec("insert into $this->table ($str) values ($strs)");
    148 
    149     }
    150 
    151 }
    152 
    153 $ob = six::gits();
    154 
    155 //单查询
    156 //$ob->tables('student')->where(['s_id'=>'08','s_name'=>'王菊']);
    157 //$data = $ob->get();
    158 //添加
    159 //$data = $ob->tables('student')->insert(['s_id'=>'14','s_name'=>'赵雷','s_birth'=>'1990-01-01','s_sex'=>'男']);
    160 //删除(单删 批删)
    161 //$data = $ob->tables('student')->deleteAll(['s_id'=>14]);
    162 //修改
    163   $ob->tables('student')->where(['s_id'=>'08']);
    164   $data = $ob->update(['s_name'=>'李云','s_sex'=>'男']);
    165 
    166 var_dump($data);
  • 相关阅读:
    Golang之排序算法
    Golang之一个简单的聊天机器人
    golang之流程控制(注意点)
    golang之指针
    vs code中自动添加注释插件koroFileHeader
    stack栈、heap堆的说明图
    c语言中的数据类型的最大最小值
    数组问题:a与&a有的区别
    STM32F10x之NVIC
    大小端的另一种测试方法
  • 原文地址:https://www.cnblogs.com/zhaoguiyuan/p/11208488.html
Copyright © 2011-2022 走看看