Heim >PHP-Framework >Denken Sie an PHP >Prinzip des Schreibens der SQL-Operationskette des ThinkPHP-Frameworks (leicht verständlich)

Prinzip des Schreibens der SQL-Operationskette des ThinkPHP-Frameworks (leicht verständlich)

藏色散人
藏色散人nach vorne
2020-08-01 13:35:462323Durchsuche

Die folgende Tutorial-Kolumne des thinkphp-Frameworks stellt Ihnen das Prinzip der SQL-Operationsketten-Schreibmethode des ThinkPHP-Frameworks vor. Ich hoffe, dass es für Freunde in Not hilfreich sein wird!

Prinzip des Schreibens der SQL-Operationskette des ThinkPHP-Frameworks (leicht verständlich)

Einführung

Es ist nicht schwer herauszufinden, ob Sie mehrere Vorstellungsgespräche geführt haben, obwohl inländische TPs dies immer getan haben kritisiert worden. Dies hat jedoch keinen Einfluss auf seine Beliebtheit bei der Entwicklung der meisten Unternehmen. Es verfügt über eine starke Community und ein praktisches und detailliertes chinesisches Handbuch. Ich glaube, dass jeder mit seiner Kettenschreibmethode vertraut ist. Die Kettenschreibmethode vereinfacht die SQL-Arbeitsbelastung bis zu einem gewissen Grad. OK, wie wird es implementiert? Beginnen wir mit der objektorientierten Implementierung und analysieren wir das Implementierungsprinzip des Kettenschreibens.

Die folgende Aussage

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

Code

Wir wissen, dass objektorientierte Methoden natürlich auch mehrere Datentypen zurückgeben können对象自身, damit wir diese Funktion verwenden können, um das gedruckte Ergebnis von

<?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());

zu erhalten:

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)

Es ist nicht schwer zu finden: unsere private Variable ist passiertist passiertÄnderungÄnderung. auchnurwirdgesagt, Ichwirobj->Func() gibt nach der Ausführung ein Objekt mit $var = "Var is change" zurück.

$User->limit(10)->where(&#39;status=1&#39;)->select();

Dann ist diese Aussage nicht schwer zu verstehen. Nachdem die Methode ausgeführt wurde, wird das Objekt an die nächste Methode übergeben und so weiter.

Einfache Select()-Implementierung

<?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();?>

Zusammenfassung

Die Idee besteht darin, jeder Bedingung der SQL-Anweisung durch die Kettenoperation Werte zuzuweisen Methode und dann Im letzten Schritt werden SQL-Anweisungen einheitlich verarbeitet. Dies ist nur eine einfache Umsetzung des Prinzips. Interessierte Studierende können mehrere Arten von Methodenparametern beurteilen und Bedingungen flexibler zuweisen. Beispielsweise kann die Methode where ein Array übergeben. Dann können Sie dieser Idee auch folgen und zum Beispiel INSERT(), UPDATE(), DELETE() usw. tun. Dies ist nur eine Einführung. Wenn Sie mehr über das Schreiben von Ketten erfahren möchten, können Sie sich auch den TP-Quellcode ansehen.

Das obige ist der detaillierte Inhalt vonPrinzip des Schreibens der SQL-Operationskette des ThinkPHP-Frameworks (leicht verständlich). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen