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