找回密码
 注册

[PHP] PHP限制参数类型为array/callable/bool/float/int/string或类名

php 发表于 2015/11/8 00:47 | 显示全部楼层 |阅读模式
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开始还支持返回值类型限制
  1. <?php
  2.         function xc(array $s){
  3.                
  4.         }
  5.         xc(array(1)); // 正确
  6.         xc(3); // 错误,因为传递的参数是整数型
  7. ?>
复制代码

手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表