Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Datenbankbetriebsmodellklasse (mit der __call-Methode)

PHP-Datenbankbetriebsmodellklasse (mit der __call-Methode)

高洛峰
Freigeben: 2023-03-03 14:04:02
Original
1432 Leute haben es durchsucht

Das Beispiel in diesem Artikel beschreibt die PHP-Datenbankbetriebsmodellklasse. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Diese Datenbankoperationsklasse verwendet die Methode __call(), um die Datensuchfunktion zu implementieren.

Der Code lautet wie folgt:

<?php
define("HOSTNAME","127.0.0.1");
define("USERNAME","root");
define("PASSWORD","");
define("DATANAME","class");
class Model{
    private $link;
    private $tableName;
    private $zd;
    private $method = array(
      "where" => "",
      "order" => "",
      "limit" => "",
      "group" => "",
      "having" => ""
      );
    public function __construct($tableName){
      $this -> tableName = $tableName;
      try{
        $this -> link = mysqli_connect(HOSTNAME,USERNAME,PASSWORD,DATANAME);
        mysqli_set_charset($this -> link,"UTF8");
      }catch(Exception $e){
        echo "数据库连接失败";
      }
      $this -> desc();
    }
    public function __destruct(){
      mysqli_close($this -> link);
    }
    public function desc(){
      $sql = " desc {$this -> tableName}; ";
      $res = mysqli_query($this -> link,$sql);
      $arr = mysqli_fetch_all($res,MYSQLI_ASSOC);
      for($i = 0 ;$i < count($arr);$i++){
        $brr[] = $arr[$i][&#39;Field&#39;];
      }
      $this -> zd = $brr;
      return $brr;
    }
    public function __call($name,$value){
      $name = strtolower($name);
      if(array_key_exists($name,$this -> method)){
        if($name == &#39;order&#39;){
          $this -> method[&#39;order&#39;] = " order by ".$value[0];
        }elseif($name == &#39;group&#39;){
        $this -> method[&#39;group&#39;] = " group by ".$value[0];
        }else{
          $this -> method[$name] = " {$name} ".$value[0];
        }
      }else{
        return "the method is not found!";
      }
      return $this;
    }
    public function method(){
      return " {$this -> method[&#39;where&#39;]} {$this -> method[&#39;order&#39;]} {$this -> method[&#39;limit&#39;]} {$this -> method[&#39;group&#39;]} {$this -> method[&#39;having&#39;]}; ";
    }
    public function find($a="*"){
      if(in_array("{$a}",$this -> zd) || $a == "*"){
        $sql = "select {$a} from {$this -> tableName} {$this -> method()} ";
      }else{
        $sql = "select * from {$this -> tableName}";
      }
      //return $sql;
      $res = mysqli_query($this -> link,$sql);
      $arr = mysqli_fetch_all($res,MYSQLI_ASSOC);
      return $arr;
    }
}
Nach dem Login kopieren

Anwendungsbeispiel:

<?php
  function __autoload($className){
    require($className.".class.php");
  }
  $a = new Model("stu");
  $a -> where("name = &#39;zhu&#39;")->limit("5,10");
  var_dump($a -> find("name"));
Nach dem Login kopieren


Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage