有没有办法要求函数参数是一个特定的数据类型,如数组?比如像这样:
function example(array $array){}
如果是,那么对所有数据类型都有效吗?是否有一个很好的资源可以告诉我如何做到这一点?
答案 0 :(得分:6)
答案 1 :(得分: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());