5

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

function example(array $array){}

如果是这样,这适用于所有数据类型吗?有没有好的资源可以告诉我如何做到这一点?

4

2 回答 2

6

看看类型提示http://php.net/manual/en/language.oop5.typehinting.php

于 2012-05-02T13:16:28.787 回答
3

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

你想要做的就是type-hinting。您不能键入提示基本数据类型,例如int, string, bool。您可以使用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());
于 2012-05-02T13:19:27.050 回答