Maison >développement back-end >tutoriel php >Implémentation du fonctionnement de la chaîne php

Implémentation du fonctionnement de la chaîne php

尚
avant
2020-03-18 09:50:523118parcourir

Implémentation du fonctionnement de la chaîne php

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=&#39;1=1&#39;) {
        $this->sql["where"]="WHERE ".$_where;
        return $this;
    }

    public function order($_order=&#39;id DESC&#39;) {
        $this->sql["order"]="ORDER BY ".$_order;
        return $this;
    }

    public function limit($_limit=&#39;30&#39;) {
        $this->sql["limit"]="LIMIT 0,".$_limit;
        return $this;
    }
    public function select($_select=&#39;*&#39;) {
        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(&#39;01389&#39;);
echo $str->trim(&#39;0&#39;)->strlen();
// 输出结果为 4;trim(&#39;0&#39;)后$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!

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