PHP でチェーン操作を実装する方法: 1. マジック関数 "__call" と "call_user_func" を組み合わせて実装します; 2. マジック関数 "__call" と "call_user_func_array" を組み合わせて実装します; 3. トリムを使用します() 実装する関数。
このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
たとえば、php 関数では、最初に文字列の末尾にあるスペースをフィルタリングしてから、その長さを調べる必要があります。一般的な記述方法は次のとおりです:
strlen(trim($str))
次のようなチェーン操作を実装したい場合たとえば、js では次のように記述すればよいでしょうか
$str->trim()->strlen()
以下は 3 つの方法で実装されます:
方法 1. マジック関数 __call と call_user_func を組み合わせて使用します。
考えを実現するには:最初に文字列クラス StringHelper を定義し、コンストラクターが値を直接割り当ててから、trim() 関数と strlen() 関数をチェーンで呼び出し、call_user_func を使用します。呼び出されたマジック関数 __call() で呼び出し関係を処理します。実装は次のとおりです:
<?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();
ターミナル実行スクリプト:
php test.php 8
方法 2、マジック関数 __call を次と組み合わせて使用します。 call_user_func_array を実行して
<?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();
手順:
array_unshift(array,value1,value2,value3...)
array_unshift()
関数は、新しい要素を配列に挿入するために使用されます。新しい配列の値は配列の先頭に挿入されます。
call_user_func()
と call_user_func_array
はどちらも関数を動的に呼び出すメソッドですが、違いはパラメータの受け渡し方法にあります。
方法 3、マジック関数 __call を使用せず、trim() 関数を使用してこれを実現します。
_call()
を変更するだけです。 trim()
関数で十分です:
public function trim($t) { $this->value = trim($this->value, $t); return $this; }
ポイントは、後者の関数の呼び出しを容易にするために $this ポインターを返すことです。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHPチェーン動作の実装方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。