PHP - 文法 - 関数の引数や戻り値の型

クラウディア 
1. 概要
2. nullable な型
3. mixted
4. 省略可能引数

1. 概要

 「PHP 5.6」から「7.2」へ移行したものだから、その間のこまごまとした経緯はよくわからんのです。  とりあえず、「PHP 7.2」では関数の引数や戻り値が定義できるぞ・・・と。  これは、C言語がネイティブな人にとってはありがたいかもしれない。

2. nullable な型

 本項は「PHP マニュアル - 付録 - PHP 7.0.x から PHP 7.1.x への移行」の請売りです。  「PHP」の場合、あるときは型規則からはずれて「NULL」として扱いたい時があるんだな。  これ、型宣言をしている型の前に ?(クエスチョンマーク)を書くことで「nullable」であることを定義できるんですと。便利。

3. mixed

 「PHP 8.0.0」以降では、今度は逆に、なんでもありの型「mixed」というものが定義されております(2021年10月13日、リリースされてだいぶたってるけど)。  「mixed」は「NULL」を含んでいるので、「mixed」の型の前に、前項の「?」(nullable)をつけたら、エラーになります。

<?php
function f(mixed $arg): mixed
{
	switch($arg)
	{
	case NULL:
		printf("NULL が来た\n");
		break;

	case 1:
		printf("数値の 1 が来た\n");
		break;

	case '2':
		printf("文字の 2 が来た\n");
		break;

	case true:
		printf("bool の true が来た\n");
		break;

	default:
		break;
	}

	return $arg;
}

$return = f(NULL);
printf("[".$return."]が返った\n");

$return = f(1);
printf("[".$return."]が返った\n");

$return = f('2');
printf("[".$return."]が返った\n");

$return = f(true);
printf("[".$return."]が返った\n");
 てな、ソースを書いて実行すると、下記の結果が得られます。

NULL が来た
[]が返った
数値の 1 が来た
[1]が返った
文字の 2 が来た
[2]が返った
数値の 1 が来た
[1]が返った
 与える側と、受け取る側で、いくらかの齟齬があるので、気を付けないとね。  「1」と「true」は、ごっちゃになるわけです。  かと言って、「switch」の「case」には、それぞれ書いても、文法エラーには、ならないんだな。

4. 省略可能引数

 省略可能引数を作成することもできます。  「C++」や「C#」あたりと同じです。

public function func(型 $引数名 = デフォルト値) : 戻り値の型
 の形式で記述しておけば、呼び出し側の方で、引数を省略した場合、引数にデフォルト値を設定した状態で、コールされます。  ってことは、複数の引数があり、省略可能と不可能な引数が混在する場合、省略不可を末尾に記述することになります。
earthcar(アースカー)