PHP7 の型ヒント機能: 一般的な型エラーを防ぐには?
型エラーは、プログラミング言語で最も一般的なエラーの 1 つです。 PHP7 では、開発者が関数宣言でパラメーターの型と関数の戻り値の型を指定できるようにする型ヒンティング機能が導入されました。型ヒント機能を使用すると、コードの読みやすさが向上するだけでなく、型エラーの発生も減らすことができます。この記事では、PHP7 のタイプ ヒンティング機能の使用方法を紹介し、一般的な型エラーの例と、タイプ ヒンティングによってそれらを防ぐ方法をいくつか示します。
1. パラメーターの型の型ヒント
PHP5 以前のバージョンでは、開発者は関数宣言でパラメーターの型を直接指定できません。そのため、パラメーターの型を手動で確認し、関数内で適切に処理する必要があり、パラメーターの型が間違っていると、誤った結果が発生しやすくなります。 PHP7 では、タイプ ヒンティングを使用してパラメータのタイプを指定でき、関数を呼び出すときに PHP エンジンがパラメータのタイプが要件を満たしているかどうかを自動的にチェックします。
function greet(string $name) { echo "Hello, " . $name; } greet("Alice"); // 正确:输出 Hello, Alice greet(123); // 错误:参数类型错误,会抛出类型错误(TypeError)异常
greet のパラメーター
$name は、タイプ
string のタイプ ヒンティングを使用します。パラメータとして文字列を渡して
greet 関数を呼び出しても、エラーは生成されません。ただし、整数を渡すと、型エラー例外がスローされます。
クラスがあり、次のメソッドを使用して関数をタイプ ヒンティングできます。
class User { private $name; public function __construct(string $name) { $this->name = $name; } public function getName(): string { return $this->name; } } function welcome(User $user) { echo "Welcome, " . $user->getName(); } $user = new User("John"); welcome($user); // 正确:输出 Welcome, John welcome("Alice"); // 错误:参数类型错误,会抛出类型错误(TypeError)异常
$user
は、User
クラスのタイプ ヒントを使用します。 John
という名前のユーザーを作成し、それをパラメータとして welcome
関数に渡します。これによりエラーは発生しません。ただし、文字列 Alice
を渡すと、型エラー例外がスローされます。 2. 戻り値の型の型ヒント
function double(int $num): int { return $num * 2; } $result = double(5); echo $result; // 正确:输出10 $result = double("Hello"); echo $result; // 错误:返回值类型错误,会抛出类型错误(TypeError)异常
の戻り値は、int
型のタイプ ヒンティングを使用します。 double
関数を呼び出すためにパラメータとして整数を渡すと、戻り値も整数になり、エラーは生成されません。ただし、文字列 Hello
を渡すと、戻り値の型が間違っており、型エラー例外がスローされます。 3. 特殊な状況における型ヒント
?string
とマークされている場合は、文字列または NULL を指定できることを意味します。
function foo(?string $name): void { if ($name !== null) { echo "Hello, " . $name; } else { echo "Hello, Guest"; } } foo(null); // 正确:输出Hello, Guest foo("Alice"); // 正确:输出Hello, Alice
function bar(mixed $value): void { echo "The value is " . $value; } bar("Hello"); // 正确:输出The value is Hello bar(123); // 正确:输出The value is 123
以上がPHP7 の型ヒント機能: 一般的な型エラーを防ぐには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。