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

Bro*_*ias 5 php parameters function

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

function example(array $array){}
Run Code Online (Sandbox Code Playgroud)

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

Car*_*rós 3

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

你想做的就是类型提示。您无法键入提示基本数据类型,例如int, string, bool。array您可以使用对象和接口进行类型提示:

function example_hinted1(array $arr) {

}

function example_hinted2(User $user) {

}
Run Code Online (Sandbox Code Playgroud)

调用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
}
Run Code Online (Sandbox Code Playgroud)

所以,这些片段可以工作:

example(1);

$b = 5 + 8;
example($b);
Run Code Online (Sandbox Code Playgroud)

虽然这些会抛出异常:

example('foo');
example(array(5, 6));
example(new User());
Run Code Online (Sandbox Code Playgroud)