PHP でチェーン コールを実装する方法: 1. マジック関数 [_call] と [call_user_func] を組み合わせて実装します; 2. マジック関数 [_call] と [call_user_func_array] を組み合わせて実装します; 3. 使用しないでください魔法の関数【_call】を使って実現します。
PHP チェーン コールの実装方法:
方法 1. マジック関数を使用します __call
を call_user_func
と組み合わせて
のアイデアを実現します。最初に文字列クラス StringHelper を定義し、コンストラクターが値を直接割り当ててから、チェーン trim( )
関数と strlen()
関数は、呼び出されるマジック関数 __call()
の call_user_func
を使用して呼び出し関係を処理します。実装は次のとおりです。
<?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() 関数で十分です。
public function trim($t) { $this->value = trim($this->value, $t); return $this; }重要なのは、後者の関数の呼び出しを容易にするために
$this ポインターを返すことです。
関連する学習の推奨事項:
以上がPHPチェーンコールを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。