PHP関数はfunctionキーワードで定義されます。モダンなPHPは、パラメータと戻り値の型宣言、デフォルト値、可変長パラメータをサポートしており、関数をより堅牢で自己説明的にします。
型宣言を使った基本的な関数
{
+ ;
}
{
;
}
();
(, );
型宣言(int $a、: int戻り値の型)により、PHPは引数と戻り値の型をチェックします。これはバグを検出し、意図を文書化します。デフォルト値はパラメータを省略可能にします。
function find(?int $id): ?User { // ? = nullable (int|null, User|null)
return $id ? lookup($id) : null;
}
function process(int|string $input): void { // union type — int OR string (PHP 8)
// ...
}
?Typeはnullを許可し、union型(int|string、PHP 8)は複数の型を許可します。これにより、シグネチャがより正確になります。
function sum(int ...$numbers): int { // variadic — any number of int args
return array_sum($numbers);
}
sum(1, 2, 3); // 6
// named arguments (PHP 8) — pass by parameter name, skip optional ones
greet(name: "Ann", greeting: "Hey");
<?php
declare(strict_types=1); // at the top of the file — enforce STRICT type checking
add("5", 3); // ❌ TypeError with strict_types (without it, "5" would coerce to 5)
declare(strict_types=1)は型宣言を厳密にします。PHPは型の不一致を拒否し、暗黙的な型変換を行わません。これは型エラーをキャッチするための推奨されるモダンなプラクティスです。
モダンなPHP関数定義、特に型宣言を理解することは、堅牢で保守性の高いコードを書くために重要であり、PHPが緩い型付けの起源からいかに進化したかを反映しています。
型付きパラメータと戻り値(nullable型とunion型を含む)は関数を自己説明的にし、PHPに型エラーをキャッチさせます。一方、デフォルト値、名前付き引数、可変長パラメータは柔軟で読みやすいシグネチャを提供します。
もっとも重要なモダンなプラクティスは**declare(strict_types=1)**です。これは厳密な型チェック(暗黙的な型変換ではなく不一致を拒否)を強制し、バグを早期に検出し、信頼性の高いコードを書くための重要なツールです。
デフォルト値を持つ適切に型付けされた関数を定義する方法を知り、strict typesを使用することは、プロフェッショナルなモダンPHP開発における日常的な知識であり、堅牢で型安全なコードを、古いPHPの緩い型付けスタイルから区別します。