PHP自定义函数是可以限制参数类型的,从PHP 5.0.0开始就支持用类名限制参数类型,限定以后,传入的参数必须是这个类的实例。
PHP 5.1.0开始增加了对array的支付,传递的参数必须是数组。
PHP 5.4.0开始支持又支持了callable这个伪类型,传递的参数必须是一个可以回调的函数。
PHP 7.0.0开始支持bool/float/int/string,传递的参数必须是布尔值/浮点数/整数/字符串
语法是这样的:
function FunctionName (TYPE $arg){ ... }
TYPE是上面提到的其中一种,可以是类名,如:function xc (PDO $db ){ ... }
TYPE也可以是array/callable/bool/float/int/string中的一个,函数的每个参数都可以单独限制。
需要注意的是
- bool和boolean,int和integer不是同一个意义,如果将类型限制为boolean或者integer,他们表示的是类名为boolean或integer.
- 对于各个版本不支持的类型,都会被当作类名处理,比如在PHP 5.6中限制为string,但该版本并不支持,所以string被当作类名。
- 对于可以自动转换的变量类型,默认是不会报错的,比如限制了类型为整数型,传递的参数为浮点数,那么也不会报错。
- 如果要严格限制类型,可以在代码前面一句 declare(strict_types=1); 来声明进入严格模式,严格模式需要PHP 7或更高版本支持。
- PHP 7开始还支持返回值类型限制
- <?php
- function xc(array $s){
-
- }
- xc(array(1)); // 正确
- xc(3); // 错误,因为传递的参数是整数型
- ?>
复制代码 |
|