ホームページ >バックエンド開発 >PHPチュートリアル >PHP でチェーン操作を実装するにはいくつかの方法があります

PHP でチェーン操作を実装するにはいくつかの方法があります

php中世界最好的语言
php中世界最好的语言オリジナル
2017-12-20 19:32:231657ブラウズ

PHPを使った連鎖演算の方法は、マジック関数callとcall_user_funcを組み合わせて実装する方法、マジック関数呼び出しとcall_user_func_arrayを組み合わせて実装する方法、マジック関数呼び出しを使わずに実装する方法の3つです。

PHP には多くの string関数 があります。たとえば、最初に文字列の末尾のスペースをフィルターしてから、その長さを調べる必要があります。一般的な書き方は次のとおりです。

jsで同様のチェーンを実装したい場合例えば以下のように書けばよいでしょうか?

strlen(trim($str))

以下は 3 つの方法で実装されます:

方法 1. call_user_func と組み合わせたマジック関数呼び出しを使用して

アイデアを実装します: まず文字列クラス

String

Helper を定義し、

constructor値を直接割り当てます。次に、trim() 関数と strlen() 関数をチェーンで呼び出し、呼び出されたマジック関数 call() で call_user_func を使用して呼び出し関係を処理します。 実装は次のとおりです:

$str->trim()->strlen()

ターミナル実行スクリプト:

<?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();

方法 2、call_user_func_array と組み合わせたマジック関数呼び出しを使用して、

php test.php

説明:

array_unshift(array,value1,value2,value3...)

array_unshift() 関数を使用します新しい要素を配列に挿入します。新しい配列の値は配列の先頭に挿入されます。

call_user_func() と call_user_func_array はどちらも関数を動的に呼び出すメソッドであり、違いはパラメーターの受け渡し方法にあります。

方法 3、これを達成するためにマジック関数呼び出しを使用しません

_call() を Trim() 関数に変更するだけです:

<?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();

重要なポイントは、後者の関数の呼び出しを容易にするために $this ポインターを返すことです。

方法 3、実装するためにマジック関数呼び出しを使用しません

_call() を Trim() 関数に変更するだけです:

public function trim($t)
{
  $this->value = trim($this->value, $t);
  return $this;
}

重要なポイントは、後者の関数の呼び出しを容易にするために $this ポインターを返すことです。

これらの事例を読んだ後は、その方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

関連書籍:

大規模な Web サイトのトラフィックと高い同時実行性の問題を PHP がどのように解決するか


PHP カスタム関数でデカルト積を生成する方法


PHP 製品フラッシュ セールのタイミングの実装 (大規模なトラフィックに対する解決策) )

以上がPHP でチェーン操作を実装するにはいくつかの方法がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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