ホームページ  >  記事  >  バックエンド開発  >  PHPチェーン動作の実装方法は何ですか?

PHPチェーン動作の実装方法は何ですか?

青灯夜游
青灯夜游オリジナル
2021-05-28 17:36:222368ブラウズ

PHP でチェーン操作を実装する方法: 1. マジック関数 "__call" と "call_user_func" を組み合わせて実装します; 2. マジック関数 "__call" と "call_user_func_array" を組み合わせて実装します; 3. トリムを使用します() 実装する関数。

PHPチェーン動作の実装方法は何ですか?

このチュートリアルの動作環境: 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(&#39;0&#39;)->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(&#39;0&#39;)->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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。