Maison > cadre php > PensezPHP > le corps du texte

Principe d'écriture de la chaîne d'opérations SQL du framework ThinkPHP (facile à comprendre)

藏色散人
Libérer: 2020-08-01 13:37:41
avant
2304 Les gens l'ont consulté

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

Principe d'écriture de la chaîne d'opérations SQL du framework ThinkPHP (facile à comprendre)

Introduction

Il n'est pas difficile de savoir si vous avez eu plusieurs entretiens, même si les TP nationaux ont toujours été critiqué. 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();
Copier après la connexion
Copier après la connexion

Code

Nous savons que les méthodes orientées objet peuvent renvoyer plusieurs types de données. Bien sûr, elles peuvent également renvoyer<. 🎜 >, nous pouvons donc utiliser cette fonctionnalité pour obtenir 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());
Copier après la connexion

:

object(Test)[1]  
private &#39;var&#39; => string &#39;&#39; (length=0)
object(Test)[1]  
private &#39;var&#39; => string &#39;Var is change&#39; (length=13)
Copier après la connexion

Ce n'est pas difficile à trouver : notre variable privée

arrivé arrivéchangerchanger. aussi juste est dit, jenousobj->Func(), après exécution, renvoie un objet avec = $var. "Var is change"

$User->limit(10)->where(&#39;status=1&#39;)->select();
Copier après la connexion
Copier après la connexion

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();?>
Copier après la connexion

Résumé

L'idée est d'attribuer des valeurs à chaque condition de l'instruction SQL via l'opération en chaîne méthode, puis Dans l'étape finale, les instructions SQL sont traitées uniformément. 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(), 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. DELETE()

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal