Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】ReflectionClass::newInstanceArgs()メソッドの使い方

newInstanceArgsメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

newInstanceArgsメソッドは、ReflectionClassオブジェクトを通じて、指定されたクラスの新しいインスタンスを動的に生成するメソッドです。このメソッドは、クラスのコンストラクタに引数を渡してオブジェクトを初期化する場合に特に有用です。通常のnew演算子を用いる方法とは異なり、クラス名やコンストラクタに渡す引数を、プログラムの実行時に柔軟に決定してインスタンスを作成できます。

メソッドの引数として、対象クラスのコンストラクタに渡したい値の配列を指定します。例えば、データベース接続情報を動的に変更して接続オブジェクトを生成する場合や、ユーザーの選択に応じて異なる設定をオブジェクトに渡す場合など、実行時に多様な条件でオブジェクトを生成したい場合に非常に役立ちます。

この機能は、依存性の注入(DI)を行うフレームワークや、設定に基づいてオブジェクトを動的に生成するライブラリなどで広く活用されています。もしコンストラクタが引数を必要としない場合や、引数を渡したくない場合は、引数配列を省略するかnullを渡すことで、引数なしでインスタンスが作成されます。

構文(syntax)

1<?php
2
3class ExampleClass
4{
5    private string $param1;
6    private int $param2;
7
8    public function __construct(string $arg1, int $arg2)
9    {
10        $this->param1 = $arg1;
11        $this->param2 = $arg2;
12    }
13
14    public function getValues(): string
15    {
16        return "{$this->param1}, {$this->param2}";
17    }
18}
19
20// ReflectionClassオブジェクトを作成し、ExampleClassについてリフレクションを行う
21$reflector = new ReflectionClass(ExampleClass::class);
22
23// コンストラクタに渡す引数の配列を準備する
24$arguments = ['Hello', 123];
25
26// newInstanceArgsメソッドを使って、引数を渡してExampleClassの新しいインスタンスを生成する
27$instance = $reflector->newInstanceArgs($arguments);
28
29// 生成されたインスタンスのメソッドを呼び出して確認
30echo $instance->getValues();
31
32?>

引数(parameters)

array $args = array ()

  • array $args = array (): インスタンス化する際に、コンストラクタに渡す引数の配列

戻り値(return)

object

指定されたクラスの新しいインスタンスを、引数に配列で指定された値を用いて生成し、その生成されたインスタンスを返します。

関連コンテンツ