2012-01-17 8 views

答えて

5

これはtype hintingです。つまり、その引数は、そのクラスまたはその子孫クラスのインスタンスでなければなりません。

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

0

commentPHP's page on function argumentsは、いくつかのヒントを提供する。引用する

あなたが許可された引数の 種類をspecifingあなたの機能のために(非常に)制限された署名を、使用することができます。例えば

public function Right(My_Class $a, array $b)

最初の引数を伝えはMy_Classの目的、二番目の配列を次の条件でなければなりません。 My_Classは、 がMy_Classを継承するか、(My_Classが抽象クラスの場合) My_Classのいずれかを実装するクラスのオブジェクトも渡すことができることを意味します。正確にMy_Classが必要な場合は、 finalとするか、実際に$ aを確認するコードを追加する必要があります。

また、(残念ながら) が署名で使用できる唯一の組み込みタイプであることに注意してください。 PHPはその$ aがクラス文字列の 対象ではありません(と$ bクラスブールの対象ではありません)文句を言われるので、任意の他のタイプすなわち:

public function Wrong(string $a, boolean $b)

は、エラーが発生します。あなたは$ aが文字列または$ bのブール値であるかどうかを知る必要がある場合は、あなたが(またはあなたがいる場合にキャストしようとすることができ 型の不一致を検出した場合

だから、あなたは関数本体とIEのスロー例外で いくつかのコードを記述する必要がありますそれは実行可能です)。

関連する問題