PHP可以在类方法和函数中实现类型约束,但参数只能指定四种类型:类、数组、接口和可调用。默认情况下,参数可以为null,而PHP不能限制标量类型或其他类型。

以下示例如下:

复制代码代码如下所示:

< PHP



类测试

{

公共功能test_array(数组arr)

{

print_r($ ARR);

}



公共功能test_class(test1 $ test1 = null)

{

print_r($ test1);

}



公共函数(调用回调test_callable美元,美元的数据)

{

call_user_func(美元的回调,美元的数据);

}



公共功能test_interface(遍历迭代器美元)

{

print_r(get_class($迭代器));

}



公共功能test_class_with_null(test1 $ test1 = null)

{



}

}



类test1 { }



新测试();



参数类型参数与函数调用定义不一致,将抛出一个致命的错误即可被捕获。



为测试-> test_array(阵列(1));

为测试-> test_class(新test1());

为测试-> test_callable('print_r ',1);

为测试-> test_interface(新的数组对象(array()));

为测试-> test_class_with_null();



那么我们如何限制标量类型呢

PECL扩展库提供了SPL类型扩展的整数,浮点数,布尔型,枚举和字符串类型约束。

复制代码代码如下所示:

新夹板(94);



{试

为int = 'try投一个字符串值的乐趣;

} catch(unexpectedvalueexception $ UVE){

echo UVE -> GetMessage(php_eol);

}



php_eol echo int.;

*

运行结果:

值不是整数

九十四

* /



SPL类型会降低实际项目的灵活性和性能。