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

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

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

作成日: 更新日:

基本的な使い方

getTypesメソッドは、共用型(Union Type)に含まれる個々の型情報のリストを取得するメソッドです。

このメソッドは、PHP 8で導入された共用型(複数の異なる型のいずれかを許容する型宣言、例えば「intまたはstring」)の情報を扱うReflectionUnionTypeクラスに属しています。ReflectionUnionTypeクラスのインスタンスからgetTypesメソッドを呼び出すと、その共用型がどのような個別の型(例: int型、string型など)で構成されているかを、それぞれReflectionNamedTypeやReflectionIntersectionTypeといった型情報を表すオブジェクトの配列として取得できます。

具体的には、例えば関数が「int|string」という共用型を引数に取る場合、このメソッドを使用することで、その共用型が「int」と「string」という二つの型から成り立っていることをプログラムで動的に確認することが可能です。

これにより、実行時に型宣言を詳細に分析し、その情報に基づいて特定の処理を行ったり、動的なバリデーションを実装したりする際に非常に有用です。リフレクションAPIの一部として、PHPプログラムのメタデータ(プログラム自身の情報)を調べる高度な機能を提供するものの一つです。

構文(syntax)

1<?php
2
3// 結合型 (Union Type) を持つ関数を定義します。
4function handleData(int|string $data): void
5{
6    // ...
7}
8
9// 上記関数のリフレクションを取得します。
10$reflectionFunction = new ReflectionFunction('handleData');
11
12// 関数の最初のパラメータのリフレクションを取得します。
13$reflectionParameter = $reflectionFunction->getParameters()[0];
14
15// パラメータの型情報が ReflectionUnionType であることを確認します。
16$type = $reflectionParameter->getType();
17
18if ($type instanceof ReflectionUnionType) {
19    // ReflectionUnionType オブジェクトから、結合型を構成する個々の ReflectionType オブジェクトの配列を取得します。
20    $individualTypes = $type->getTypes();
21
22    // $individualTypes は ReflectionType オブジェクトの配列となり、
23    // この例では 'int' と 'string' の型情報を含みます。
24}

引数(parameters)

引数なし

引数はありません

戻り値(return)

array

ReflectionUnionType::getTypesは、このUnion型を構成する各型を表すReflectionTypeオブジェクトの配列を返します。

関連コンテンツ