PHP8関数の新機能総まとめ
PHP8関数の概要
PHP8では関数定義がより柔軟になり、型付き引数や戻り値の型宣言が標準でサポートされるようになりました。これにより、関数の入力と出力が明確になり、バグの早期発見が可能です。また、デフォルト引数や名前付き引数、Union型、可変長引数、無名関数、アロー関数といった新機能が追加され、開発者の生産性が向上しました。
型付き引数と戻り値の型宣言
関数の引数に型を付けることで、呼び出し時に渡す値の型を保証します。戻り値にも型を宣言でき、関数の契約が明確になります。
function add(int $a, int $b): int {
return $a + $b;
}
上記の例では、$a と $b は整数でなければならず、戻り値も整数であることが保証されます。型ヒントはオブジェクト型や配列型、さらにはリスト型も指定できます。
デフォルト引数・名前付き引数
デフォルト引数を設定すると、呼び出し側で値を省略できるようになります。名前付き引数は引数名を明示して渡すことで、順序に依存せずに呼び出せる便利な機能です。
function greet(string $name, string $greeting = 'Hello'): string {
return "$greeting, $name!";
}
echo greet('Alice'); // Hello, Alice!
echo greet('Bob', greeting: 'Hi'); // Hi, Bob!
名前付き引数は可読性を高め、引数の順序が変更されてもコードが壊れにくくなります。
Union型と可変長引数
Union型は複数の型を許容する引数を定義できます。PHP8では「|」で型を結合します。
function formatValue(int|string $value): string {
return (string) $value;
}
可変長引数は「...」を使って任意個の引数を受け取ります。配列として内部で扱われます。
function sum(...$numbers): int {
return array_sum($numbers);
}
Union型と可変長引数を組み合わせることで、柔軟かつ安全な関数設計が可能です。
無名関数とアロー関数
無名関数(クロージャ)は名前を持たない関数で、変数に代入したり、引数として渡したりできます。アロー関数は短い構文で書ける無名関数の一種で、外部変数を自動でキャプチャします。
$square = function(int $x): int {
return $x * $x;
};
$increment = fn(int $x): int => $x + 1;
アロー関数は「fn」キーワードを使い、式を返すだけの簡潔な書き方が特徴です。コールバックやストリーム処理で頻繁に利用されます。
コメント
コメントを投稿