古庄親方の上級試験コラム#005「言語リファレンス > 型 その4」

PHPでは、変数には型があり、関数のパラメータや戻り値、クラスのプロパティに型の指定をする事ができます。 https://www.php.net/manual/ja/language.types.type-system.php

関数/メソッドの引数や戻り値に使える型として、今まで紹介したもの以外に以下もあります。
なおPHP7以下を使っている場合、以下のいくつかが「使えない」ので注意しましょう。
https://www.php.net/manual/ja/language.types.declarations.php に変更履歴があるので、参考にするとよいでしょう。

Callable型は「ユーザーが定義するコールバック関数(メソッド)」を引数の型として指定します。
「stringの関数名」のほかに「クラス名とメソッド名(string)の配列」「クラスオブジェクトとメソッド名(string)の配列」「”クラス名::メソッド名”のフォーマットの文字列」「無名関数やアロー関数(詳しい説明は別項で改めて行います)」「__invoke()を実装したクラスのオブジェクト」「三点リーダー/三点ドットを使った無名関数の生成(マニュアルの記載的には「第一級callableの生成」): PHP8.1以降」など、様々な方法があります。

void型は「戻り値がない」事を指定する型です。

複合型(union型と交差型)は、引数や戻り値で「いくつかの型を許容したい」「すべての条件を満たす型だけを許容したい」ケースの時に使います。

交差型は「型のand」ように動き、すべての条件を満たす型のみを受け入れます。交差型はPHP8.1以降の機能なので、試験範囲の対象外です。

union型は「型のor」のように動き、「指定された型のいずれかが満たされれば」受け入れます。

型のエイリアスとして、以下の「Iterable型」「とMixed型」があります。

Iterable型は「foreachで扱う事ができる」変数型です。具体的には、「配列(array)」または「Traversableインタフェースを継承しているクラス(Traversable)」のどちらかが期待されます。
書式としては「array|Traversable」となります。

Mixed型は「あらゆる型を受け入れる」型です。
書式としては「object|resource|array|string|float|int|bool|null」となります。

never型は「関数がreturnしない」事を指し示す型です。PHP8.1以降で使えるので、試験範囲の対象外です。

このコラムに関連するコードはこちらになります( https://github.com/php-engineer-examination/php8_column_expert/blob/main/src/005.php )。
第一級callableの生成、交差型、never型については、PHP 8.0環境だとエラーになるので、コードを分けています( https://github.com/php-engineer-examination/php8_column_expert/blob/main/src/005_NotTested.php )。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次