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

PHPでオブジェクトのインスタンス化とメソッド呼び出しを1行で行う方法

はい、PHPではオブジェクトのインスタンス化とメソッドの呼び出しを1行で記述することが可能です。この機能はPHP 5.4から導入されました。

オブジェクトは、クラスのメンバーにアクセスする形式でインスタンス化できます。基本的な構文は以下の通りです。

(new my_var)-> my_instance()

コードの解説 − ここで、my_instance は呼び出すメソッド名、my_var はインスタンス化するクラス(オブジェクト)を表しています。new を括弧で囲むことで、その場で生成したインスタンスに対して直接メソッドを実行できるのがポイントです。

使用例

class Test_class {
   public function __construct($param) {
      $this->_var = $param;
   }
   public function my_method() {
      return $this->_var * 2;
   }
   protected $_var;
}
function Test_class($param) {
   return new Test_class($param);
}
$a = Test_class(10)->my_method();
var_dump($a);

実行結果

上記のコードを実行すると、次の出力が得られます。

int(20)

コードの仕組み

この例では、コンストラクタで受け取った値を保持し、my_method() がその値を2倍して返すシンプルなクラス Test_class を定義しています。

注目すべきは、同名のヘルパー関数 Test_class($param) を用意している点です。この関数は new Test_class($param) で生成したインスタンスを返すため、呼び出し側では Test_class(10)->my_method() という形で、インスタンス生成からメソッド実行までを1行で完結させています。

活用のポイント

この構文は、ファクトリ関数やヘルパークラスの戻り値に対して直接処理をつなげたい場合などに便利です。また、(new Foo)->property のようにプロパティへのアクセスも同様の書き方で行えます。ただし、古いバージョンのPHP(5.3以前)ではこの構文が使えないため、実行環境のバージョンには注意が必要です。

  1. サムスンGalaxyスマホの「ARゾーン」アプリとは?使い方と削除・非表示の方法を解説

    新しいサムスンのGalaxyスマホを購入したばかりの方や、お使いの端末をAndroid 10にアップデートした方は、アプリ一覧に見慣れないアプリがいくつか追加されていることに気づいたかもしれません。そのひとつが「ARゾーン(AR Zone)」です。 この記事では、ARゾーンアプリの概要、実際に何ができるのか、そしてアンインストールできるのかどうかまで、詳しく解説していきます。 ARゾーンアプリとは? ARとは「拡張現実(Augmented Reality)」の略で、ARゾーンアプリはこの技術を手のひらの中で気軽に体験できるようにすることを目指したアプリです。 DepthVisionカメラを搭載

  2. JavaのSwingUtilities.invokeLater()メソッドの使い方を徹底解説

    invokeLater()メソッドとはinvokeLater()メソッドは、SwingUtilitiesクラスが提供するstaticメソッドの一つで、AWTイベントディスパッチスレッド(Event Dispatch Thread)上でタスクを非同期に実行するために使用されます。このメソッドはSwingUtilities.invokeAndWait()とよく似た動作をしますが、大きな違いは、処理のリクエストをイベントキューに登録した後、すぐに呼び出し元へ制御を返すという点です。つまり、invokeLater()は引数で渡されたRunnableオブジェクト内のコードブロックの実行完了を待ちません。