【PHP8.x】ReflectionParameter::isPromoted()メソッドの使い方
isPromotedメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
isPromotedメソッドは、PHP 8で導入された「コンストラクタプロパティプロモーション」によって生成されたパラメータであるかどうかを判定するメソッドです。このメソッドはReflectionParameterクラスに属しており、特定の関数やメソッドの引数に関する詳細な情報を取得する際に利用されます。
PHP 8では、クラスのコンストラクタで引数を受け取り、同時にその引数をクラスのプロパティとして宣言・初期化する構文が簡略化されました。これをコンストラクタプロパティプロモーションと呼び、例えば__construct(public string $name)のように記述することで、$nameがプロパティとしても自動的に定義されます。
isPromotedメソッドは、ReflectionParameterオブジェクトが表す引数が、このコンストラクタプロパティプロモーションによってプロパティとして定義されたものである場合にtrueを返し、そうでない場合にはfalseを返します。これにより、リフレクションを用いてクラスの構造を解析する際に、プロモートされたプロパティであるか、単なるコンストラクタ引数であるかを区別することが可能になります。
このメソッドは、コード解析ツールやフレームワークなどで、クラスの定義を動的に検査し、特定のプロパティがどのように定義されているかを把握する必要がある場合に特に役立ちます。
構文(syntax)
1<?php 2 3class Article 4{ 5 public function __construct(public string $title, private int $views) {} 6} 7 8$reflectionMethod = new ReflectionMethod(Article::class, '__construct'); 9$parameter = $reflectionMethod->getParameters()[0]; // $title パラメータを取得 10 11var_dump($parameter->isPromoted()); 12 13?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
bool
このメソッドは、対象となるパラメータがコンストラクタプロパティ昇格によって宣言されている場合に true を、そうでない場合に false を返します。