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 'var' => string '' (length=0) object(Test)[1] private 'var' => string 'Var is change' (length=13)
Es ist nicht schwer zu finden: unsere private Variable $var
= "Var is change"
zurück.
$User->limit(10)->where('status=1')->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.