Es gibt viele String-Funktionen in PHP. Sie müssen beispielsweise zuerst die Leerzeichen am Ende des Strings filtern und dann seine Länge ermitteln:
strlen(trim($str))
Wenn Sie Ich möchte beispielsweise eine ähnliche Kettenoperation wie in js implementieren. Wie soll ich Folgendes schreiben?
$str->trim()->strlen()
Das Folgende wird auf drei Arten implementiert:
Methode 1. Verwenden Sie die magische Funktion __call kombiniert mit call_user_func, um
Idee: Zuerst definieren Der Konstruktor weist der String-Klasse StringHelper direkt einen Wert zu und ruft dann die Funktionen trim() und strlen() in einer Kette auf. Die aufrufende Beziehung wird mithilfe von call_user_func in der aufgerufenen magischen Funktion __call() gehandhabt.
<?php class StringHelper { private $value; function __construct($value) { $this->value = $value; } function __call($function, $args){ $this->value = call_user_func($function, $this->value, $args[0]); return $this; } function strlen() { return strlen($this->value); } } $str = new StringHelper(" sd f 0"); echo $str->trim('0')->strlen();
Terminal-Ausführungsskript:
php test.php 8
Methode 2. Verwenden Sie die magische Funktion __call in Kombination mit call_user_func_array, um
<?php class StringHelper { private $value; function __construct($value) { $this->value = $value; } function __call($function, $args){ array_unshift($args, $this->value); $this->value = call_user_func_array($function, $args); return $this; } function strlen() { return strlen($this->value); } } $str = new StringHelper(" sd f 0"); echo $str->trim('0')->strlen();
Anweisungen zu implementieren:
array_unshift(array,value1,value2,value3...)
array_unshift( )-Funktion wird verwendet, um neue Elemente in ein Array einzufügen. Die Werte des neuen Arrays werden am Anfang des Arrays eingefügt.
call_user_func() und call_user_func_array sind beide Methoden zum dynamischen Aufrufen von Funktionen. Der Unterschied liegt in der Art und Weise, wie Parameter übergeben werden.
Methode drei: Verwenden Sie nicht die magische Funktion __call, um
Ändern Sie einfach _call() in die trim()-Funktion:
public function trim($t) { $this->value = trim($this->value, $t); return $this; }
Der Schlüssel Der Punkt besteht darin, den Zeiger $this zurückzugeben, um den Aufruf der letztgenannten Funktion zu erleichtern.
Empfohlen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonDrei Möglichkeiten, Kettenoperationen in PHP zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!