La clé du fonctionnement en chaîne PHP est de renvoyer $this après avoir terminé l'opération
1. Implémentez le fonctionnement en chaîne sans utiliser la méthode __call
<?php class Sql{ private $sql=array("from"=>"", "where"=>"", "order"=>"", "limit"=>""); public function from($tableName) { $this->sql["from"]="FROM ".$tableName; return $this; } public function where($_where='1=1') { $this->sql["where"]="WHERE ".$_where; return $this; } public function order($_order='id DESC') { $this->sql["order"]="ORDER BY ".$_order; return $this; } public function limit($_limit='30') { $this->sql["limit"]="LIMIT 0,".$_limit; return $this; } public function select($_select='*') { return "SELECT ".$_select." ".(implode(" ",$this->sql)); } } $sql =new Sql(); echo $sql->from("testTable")->where("id=1")->order("id DESC")->limit(10)->select(); //输出 SELECT * FROM testTable WHERE id=1 ORDER BY id DESC LIMIT 0,10 ?>
. 2. Utilisez la méthode __call pour implémenter les opérations en chaîne
__call() sera déclenché lorsque l'objet appelle une méthode inaccessible, afin qu'il puisse réaliser la création de méthodes dynamiques de la classe et réaliser la réutilisation des méthodes de PHP. fonction de chargement, mais il s'agit en fait d'un sucre syntaxique (tout comme la méthode __construct()).
<?php class String { public $value; public function __construct($str=null) { $this->value = $str; } public function __call($name, $args) { $this->value = call_user_func($name, $this->value, $args[0]); return $this; } public function strlen() { return strlen($this->value); } } $str = new String('01389'); echo $str->trim('0')->strlen(); // 输出结果为 4;trim('0')后$str为"1389" ?>
Recommandations associées :
Tutoriel vidéo PHP : https://www.php.cn/course/list/29/type/2.html
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!