PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPでメソッドチェーンを実現する方法をわかりやすく解説

PHPでは「メソッドチェーン」という手法を使うことで、複数のメソッドを連続して呼び出すことができます。この仕組みを実現する鍵となるのがミューテータ(mutator)メソッドです。ミューテータメソッドは、処理の最後に自分自身のオブジェクト($this)を返します。そのため、戻り値となったオブジェクトに対してさらに別のメソッドを続けて呼び出すことが可能になります。

実装例

以下は、メソッドチェーンを利用したシンプルなサンプルコードです。

<?php
class sample_class {
   private $str;
   function __construct() {
      $this->str = "";
   }
   function addA() {
      $this->str .= "am";
      return $this;
   }
   function addB() {
      $this->str .= "_bn";
      return $this;
   }
   function getStr() {
      return $this->str;
   }
}
$new_object = new sample_class();
echo $new_object->addA()->addB()->getStr();

実行結果

このコードを実行すると、次のような出力が得られます。

am_bn

ポイント解説

  • 各メソッド内で return $this; を記述し、自分自身のインスタンスを返すことが重要です。
  • これにより、$new_object->addA()->addB()->getStr() のように、矢印演算子(->)でつなげてメソッドを順番に実行できます。
  • 最後の getStr() は文字列を返すため、チェーンの終端として機能します。

メソッドチェーンを活用すると、コードを簡潔かつ読みやすくまとめられるため、クエリビルダーや文字列操作ライブラリなどでも広く使われています。

  1. JavaScriptでメソッドを借りる方法とは?call()・apply()・bind()の使い方を解説

    JavaScriptでは、call()、apply()、bind() の3つのメソッドを使うことで、他のオブジェクトが持つメソッドを「借りて」実行することができます。このテクニックは「メソッドの借用(Method Borrowing)」と呼ばれ、コードの再利用性を高めるために広く活用されています。call()・apply()・bind() の違いcall():第1引数に this として渡したいオブジェクトを指定し、残りの引数はカンマ区切りで個別に渡します。呼び出し時に即座に実行されます。apply():call() とほぼ同じですが、引数を配列(または配列風オブジェクト)としてまとめて渡す点

  2. C#でメソッドを定義する方法を徹底解説!基本構文とサンプルコード

    メソッド(Method)とは、特定のタスクを実行するためにまとめられた一連のステートメントの集まりです。すべてのC#プログラムには、Mainという名前のメソッドを持つクラスが必ず1つ以上含まれています。 C#におけるメソッド定義の基本構文 メソッドを定義するということは、その構造を構成する各要素を宣言することにほかなりません。C#でメソッドを定義する際の基本構文は以下の通りです。 <アクセス修飾子> <戻り値の型> <メソッド名>(パラメータリスト) {     メソッド本体 } 構文を構成する5つの要素 アクセス修