PHP。有没有办法要求函数参数成为一个数组?

时间:2012-05-02 13:12:26

标签: php function parameters

有没有办法要求函数参数是一个特定的数据类型,如数组?比如像这样:

function example(array $array){}

如果是,那么对所有数据类型都有效吗?是否有一个很好的资源可以告诉我如何做到这一点?

2 个答案:

答案 0 :(得分:6)

答案 1 :(得分:3)

编辑:是的,您可以使用数组输入提示,因此编辑了我的答案并相应地进行了更改。

您要做的是type-hinting。您无法输入提示基本数据类型,例如intstringbool。您可以使用array或对象和接口输入提示:

function example_hinted1(array $arr) {

}

function example_hinted2(User $user) {

}

调用example_hinted1(5)会产生PHP致命错误(不是例外),但调用它传递数组是完全可以的。

如果你需要确定某个函数的某个参数来自基本类型,你可以使用函数内的代码来模拟这种行为:

function example($number) {
  if (!is_int($number) {
    throw new Exception("You must pass an integer to ".__FUNCTION__."()");
  }
  // rest of your function
}

所以,这些片段可行:

example(1);

$b = 5 + 8;
example($b);

虽然这会引发异常:

example('foo');
example(array(5, 6));
example(new User());