PHP的方法参数类型约束实例讲解
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要讲解了"PHP的方法参数类型约束实例讲解",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP的方法参数类型约束实例讲解"吧!关于PHP的方
千家信息网最后更新 2024年11月23日PHP的方法参数类型约束实例讲解
这篇文章主要讲解了"PHP的方法参数类型约束实例讲解",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP的方法参数类型约束实例讲解"吧!
关于PHP的方法参数类型约束
在PHP5之后,PHP正式引入了方法参数类型约束。也就是如果指定了方法参数的类型,那么传不同类型的参数将会导致错误。在PHP手册中,方法的类型约束仅限于类、接口、数组或者callable回调函数。如果指定了默认值为NULL,那么我们也可以传递NULL作为参数。
class A{}
function testA(A $a){
var_dump($a);
}
testA(new A());
// testA(1);
// Fatal error: Uncaught TypeError: Argument 1 passed to testA() must be an instance of A, int given,
在这个例子中,我们定义了参数类型为A类,所以当我们传递一个标量类型时,直接就会返回错误信息。
function testB(int $a){
var_dump($a);
}
testB(1);
testB('52aadfdf'); // 字符串强转为int了
// testB('a');
// Fatal error: Uncaught TypeError: Argument 1 passed to testB() must be of the type int, string given
function testC(string $a){
var_dump($a);
}
testC('测试');
testC(1); // 数字会强转为字符串
// testC(new A());
// Fatal error: Uncaught TypeError: Argument 1 passed to testC() must be of the type string
在手册中明确说明了标量类型是不能使用类型约束的。但其实是可以使用的,不过如果都是标量类型则会进行相互的强制转换,并不能起到很好的约束作用。比如上例中int和string类型进行了相互强制转换。指定了非标量类型,则会报错。此处是本文的重点,小伙伴们可要划个线了哦。其实说白了,如果我们想指定参数的类型为固定的标量类型的话,在参数中指定并不是一个好的选择,最好还是在方法中进行再次的类型判断。而且如果参数中进行了强转,也会导致方法内部的判断产生偏差。
最后我们再看一看接口和匿名方法的类型约束。匿名参数类型在Laravel等框架中非常常见。
// 接口类型
interface D{}
class childD implements D{}
function testD(D $d){
var_dump($d);
}
testD(new childD());
// 回调匿名函数类型
function testE(Callable $e, string $data){
$e($data);
}
testE(function($data){
var_dump($data);
}, '回调函数');
感谢各位的阅读,以上就是"PHP的方法参数类型约束实例讲解"的内容了,经过本文的学习后,相信大家对PHP的方法参数类型约束实例讲解这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
类型
参数
方法
实例
标量
函数
接口
学习
内容
字符
字符串
手册
错误
强制
不同
说白了
中指
也就是
作用
例子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全执法检查总结6
汇雅电子图书数据库具有哪些功能
金昌市委网信办网络安全宣传
服务器安装设置密码
开源软件开发信息推荐
工程网络安全ppt
有网络安全这个职业吗
聊城ios软件开发系统
宝坻区电子网络技术不二之选
服务器忘记管理员密码怎么办
数据库list作用
b站软件开发设计项目案例
apache服务器是实现什么d
tbc服务器人数怎么看
郑州阿甲科技互联网
怎么给领导做网络安全培训
如何处理发票系统连接服务器失败
咸宁网络技术
哔哩哔哩漫游解析服务器最新
搜狐数据库技术总监是谁
linux环境连接mysql服务器命令
软件开发金融领域
查询数据库中某个特定行
网络安全管理办法机关
网络技术入股投资
抖影服务器
服务器可以远程发送么
学软件开发多钱
邯郸c语言软件开发价钱
怎样判断数据库是否删除