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);
相關文章
相關標籤/搜索