1. ホーム
  2. php

プリミティブな値に対する PHP のタイプヒンティング?

2023-11-23 22:43:03

質問

プリミティブな型を期待するためにメソッドをタイプヒントすることができるかどうかを知りたいのですが。

このようなものです。

public function someMethod(string $str)
                         //^^^^^^

または

private function anotherMethod(int $num)
                             //^^^

と同じように

private function otherMethod(Person $rambo)
                           //^^^^^^

phpで可能でしょうか?

どのように解決するのですか?

PHP7では、以下のように追加されました。

型宣言により、関数は呼び出し時にパラメータが特定の型であることを要求することができます。与えられた値が不正な型であった場合、エラーが発生します。PHP 5では、これは回復可能な致命的なエラーとなりますが、PHP 7ではTypeError例外がスローされます。

参考にしてください。 http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration


この回答があったときは、PHP 5が最新で、次のように言っていました。

PHP 5 では、型ヒンティングが導入されました。関数は、パラメータを強制的に をオブジェクト (関数プロトタイプでクラス名を指定)、 インターフェース、配列 (PHP 5.1 以降)、 callable (PHP 5.4 以降) に強制することができるようになりました。 . しかし、NULLがデフォルトのパラメータ値として使用された場合、それ以降の呼び出しの引数として許可されます。

クラスやインターフェースがタイプヒントとして指定された場合、その子や実装もすべて許可されます。

型ヒントはintやstringのようなスカラー型では使用できません。 リソースやトレイトも使用できません。

参考にしてください。 http://php.net/manual/en/language.oop5.typehinting.php