Maison  >  Article  >  cadre php  >  Une brève analyse du principe de la méthode d'écriture en chaîne des opérations SQL dans le framework ThinkPHP

Une brève analyse du principe de la méthode d'écriture en chaîne des opérations SQL dans le framework ThinkPHP

藏色散人
藏色散人avant
2021-03-31 17:35:401961parcourir

La colonne tutorielle suivante de thinkphp vous présentera le principe de l'écriture de la chaîne d'opérations SQL dans le framework ThinkPHP. J'espère qu'elle sera utile aux amis dans le besoin !

Une brève analyse du principe de la méthode d'écriture en chaîne des opérations SQL dans le framework ThinkPHP

Introduction

Si vous avez Après plusieurs entretiens, il n'est pas difficile de constater que même si les TP nationaux ont toujours été critiqués. Mais cela n’affecte pas sa popularité dans le développement de la majorité des entreprises. Il dispose d’une communauté forte et d’un manuel chinois pratique et détaillé. Une chose que je pense que tout le monde connaît est sa méthode d'écriture en chaîne. La méthode d'écriture en chaîne simplifie dans une certaine mesure la charge de travail SQL. OK, comment est-il implémenté ? Commençons par l'orientation objet et analysons le principe d'implémentation de l'écriture en chaîne.

L'instruction suivante

$User->limit(10)->where('status=1')->select();

Code

Nous savons que la méthode orientée objet peut renvoyer une variété de types de données. Bien sûr, elle peut également renvoyer对象自身, afin que nous puissions utiliser Cette fonctionnalité implémente le résultat imprimé de

<?php
class Test{
    private $var = "";
    public function Func(){
        $this->var = "Var is change";
        return $this;
    }

}

    $obj = new Test();
    var_dump($obj);
    var_dump($obj->Func());

 :

object(Test)[1]
  private 'var' => string '' (length=0)
object(Test)[1]
  private 'var' => string 'Var is change' (length=13)

Ce n'est pas difficile à trouver : notre variable privée $var a changé. En d'autres termes, notre $obj->Func(), après exécution, renvoie un objet avec $var = "Var is change".

$User->limit(10)->where('status=1')->select();

Alors cette déclaration n'est pas difficile à comprendre. Une fois la méthode exécutée, l’objet est transmis à la méthode suivante, et ainsi de suite.

Implémentation simple de Select()

<?php
    class UserModel{

        private $field     ="*"; 
        private $tableName ="";
        private $where     ="";
        private $order     ="";
        private $limit     ="";

        function field($field){
            $this->field = $field;
            return $this;
        }

        function table($tableName){
            $this->table = $tableName;
            return $this;
        }

        function order($order){
            $this->order = "ORDER BY ".$order;
            return $this;
        }

        function where($where){
            $this->where = "WHERE ".$where;
            return $this;
        }

        function limit($index, $limit = 0){
            $this->limit = "LIMIT ".$index;
            if($limit){
                $this->limit.= ",{$limit}";
            }
            return $this;
        }

        function select(){
            if(empty($this->tableName)){
                $this->tableName = str_replace("Model", "", __CLASS__);//如果表名不指定,则获取类名
            }
            $selectSql ="SELECT {$this->field} 
                         FROM `{$this->tableName}` 
                         {$this->where} 
                         {$this->order} 
                         {$this->limit}"; //构造SQL语句模版串
            echo $selectSql;
            //return mysql_query($selectSql);  执行拼接后的SQL语句
        }

    }

    $user = new UserModel();
    $user->where("`user` = 1")->order("`user` DESC")->limit(5)->select();

?>

Résumé

L'idée est probablement d'utiliser la méthode d'opération en chaîne pour attribuer des valeurs à chaque condition de l'instruction SQL, puis traiter le SQL de manière unifiée dans la dernière instruction d'étape. Il ne s'agit que d'une simple mise en œuvre du principe. Les étudiants intéressés peuvent juger plusieurs types de paramètres de méthode et attribuer des conditions de manière plus flexible. Par exemple, la méthode Where peut transmettre un tableau. Ensuite, vous pouvez également suivre cette idée et faire, par exemple, INSERT(), UPDATE(), DELETE(), etc. Ceci n'est qu'une introduction. Si vous souhaitez en savoir plus sur l'écriture en chaîne, vous pouvez également consulter le code source de TP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer