Heim  >  Artikel  >  Backend-Entwicklung  >  Implementierung des PHP-Kettenbetriebs

Implementierung des PHP-Kettenbetriebs

尚
nach vorne
2020-03-18 09:50:523073Durchsuche

Implementierung des PHP-Kettenbetriebs

Der Schlüssel zur PHP-Kettenoperation besteht darin, $this nach Abschluss der Operation zurückzugeben

1. Implementieren Sie die Kettenoperation ohne Verwendung der __call-Methode

<?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. Verwenden Sie die __call-Methode, um Kettenoperationen zu implementieren

__call() wird ausgelöst, wenn das Objekt eine nicht zugängliche Methode aufruft, sodass dynamische Methoden der Klasse erstellt und die Methodenwiederverwendung von PHP realisiert werden können. Ladefunktion, aber es ist tatsächlich ein syntaktischer Zucker (wie auch die __construct()-Methode).

<?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"
?>

Verwandte Empfehlungen:

PHP-Video-Tutorial: https://www.php.cn/course/list/29/type/2.html

Das obige ist der detaillierte Inhalt vonImplementierung des PHP-Kettenbetriebs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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