スキップしてメイン コンテンツに移動

PHP8関数の新機能総まとめ

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」キーワードを使い、式を返すだけの簡潔な書き方が特徴です。コールバックやストリーム処理で頻繁に利用されます。

この記事はAIによって作成されました。

コメント