2017-08-15 5 views
-3
function request($suffix, array $post = array(), $action = NULL) { 
    // do something... 
} 

私は本の中の機能を見ました。しかし、arrayというキーワードが、その機能のパラメータリストに$postの前に何を意味するのか分かりません。私はarrayを省略すると同じ効果があると思う。PHP関数のパラメータリストで `array`キーワードは何を意味しますか?

データ型のプロンプトとして機能しますか?もしそうなら、他のパラメータの前にstringintegerなどを使用できないのはなぜですか?

+1

です。パラメータ '$ post' **は**配列でなければなりません。それが配列でない場合は、エラーをスローします。 – Jer

+1

私はPHP 7.0で、より厳密なデータ入力方法を導入したと考えています。 $ postの前の配列はエラーをスローし、関数が誤って使用されている場合には適切な処理を可能にします。 – IsThisJavascript

+0

https://stackoverflow.com/documentation/php/1430/type-hinting#t=201708151042557575845 – Ghost

答えて

5
function request($suffix, array $post = array(), $action = NULL) { 
    // do something... 
} 

この関数は、パラメータの数、パラメータ$ポストはタイプが、我々はそれがそのに準拠しているので、$ポストは、デフォルトとして空の配列を割り当てている見ることができ、ここで配列

array $post = array() 

に示唆されて受け入れあなたはその関数の引数として配列以外のものを合格しようとした場合にエラー

を取得します

$post = array() and array $post = array() will return the same 

を入力

type hinting詳細説明は

+0

ありがとう!それで、なぜ 'array'型のヒントが、データ型をPHPのArrayに制限するのか、なぜなら' integer'や 'string'など他の型を制限するヒントはないのでしょうか? ( 'integer'、' string'などを使用すると、IDEで構文エラープロンプトが表示されます。PHP 5.6を使用しています。) – Benson

+2

PHP5では、このタイプのヒントは、最初の引数が文字列ではなくクラス "文字列"のインスタンスであると解釈されることに注意してください。 PHP5の結果、このように記述されたクラスに文字列を渡すと、エラーが発生します。 PHP7では文字列が必要です。 - 出典:https://torquemag.io/2016/09/wordpress-developers-guide-type-hinting/ @Benson – Jer

+2

http://php.net/manual/en/functions.arguments.php#functions.arguments。型宣言 – Cezary

関連する問題