0

JavaやC#などの一部のプログラミング言語では、プログラマーが許可された入力変数タイプを設定することが許可されています。私はPHPを使用していますが、メソッド/関数に間違ったデータを渡さないように同じことをしたいと思っています。

私のコード:

public static function generateFiles(array $data, Custom_Pager $pager)
{...}

なぜそれが許可され、私はそのように書くことができません:

public static function generateFiles(array $data, Custom_Pager $pager, int $limit, string $text)
{ ... }

上で示した1番目と2番目のメソッド宣言を標準化する方法はありますか?いいえの場合、なぜですか?

4

3 に答える 3

1

はい、型ヒントを使用してパラメータを強制的に特定の型にすることができますが、プリミティブ型では機能しないようです。

ただし、パラメータ値が期待を満たさない場合は、メソッドで例外をスローできます。

if (!is_int($param))
    throw new Exception('param must be int.');
于 2013-03-11T14:20:02.603 に答える
1

PHPは弱い型の言語であるため、それは不可能です。

PHP5.1ではタイプヒントが導入されましたが、制限があります。

型ヒントは、intやstringなどのスカラー型では使用できません。特性も許可されていません。

于 2013-03-11T14:15:41.440 に答える
0

タイプヒントを強制する関数を作成しました。それはそのように機能します:

function getVar($var,$type) {
switch($type) { 
 case "int":
  return (int)$var;
 case "string":
  return (string)$var;
}
}

他のすべてのタイプを続行できます。また、同じメソッドを作成して、is_int、is_string、is_boolなどの変数をチェックすることもできます。

于 2013-03-11T14:28:59.403 に答える