PHP7中强类型开启的方法是什么,怎样应用
Admin 2022-07-30 群英技术资讯 555 次浏览
我们知道php是一种弱类型的编程语言,但是php7已经有所改变,可以支持代码开启强类型模式了,好消息。
php7开启强类型模式,这是php7相比之前版本效率提高的部分原因,先来看两个例子
首先
<?php function sum($a,$b):float { return $a+$b; } var_dump(sum(1,2)); var_dump(sum(1,2.5)); ?>
输出结果为:
float(3) float(3.5)
然后加上强类型模式
<?php define(strict_types=1);//注意这一句必须要放在第一行,而且顶格 function sum($a,$b):float { return $a+$b; } var_dump(sum(1,2)); var_dump(sum(1,2.5)); ?>
输出结果为:
float(3) float(3.5)
从这里好像看不出区别,因为int->float类型的转换是允许的。
咱们再看一个例子:
function sum(int $a,int $b):float { return $a+$b; } var_dump(sum(1,2)); var_dump(sum(1,2.5));
输出结果为:
float(3) float(3)
这是因为2.5被强制转化为int类型,值为2,1+2=3,结果也没有什么问题,但是一般来说这种隐式的转化太过于难理解,可能不是我们预期的结果。
所以我们加入强类型模式来看一下输出结果,代码如下:
<?php declare(strict_types=1); function sum(int $a,int $b):float { return $a+$b; } var_dump(sum(1,2)); var_dump(sum(1,2.5)); ?>
输出结果为:
float(3) Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, float given, called in /home/www/learn.php on line 8 and defined in /home/www/learn.php:3 Stack trace: #0 /home/www/learn.php(8): sum(1, 2.5) #1 {main} thrown in /home/www/learn.php on line 3
这里可以看出,强类型模式生效了,sum(1,2.5)一句出错了,2.5因为不是int类型导致程序出现错误。
如果遇到这种情况,让我们通过捕获异常的方式来捕获这种错误
代码如下:
<?php declare(strict_types=1); function sum(int $a,int $b):float { return $a+$b; } try { var_dump(sum(1,2)); var_dump(sum(1,2.5)); } catch(TypeError $e) { echo 'Error:'.$e->getMessage(); } ?>
输出结果为:
float(3) Error:Argument 2 passed to sum() must be of the type integer, float given, called in /home/www/learn.php on line 9
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
swoole可以配置证书。首先安装swoole的openssl支持,重新编译安装swoole源码,加上--enable-openssl,代码中使用websocket ssl代替ws,在客户端中将连接换为wss即可。
php数组中array_column()函数的使用:1、返回输入数组中某个单一列的值。一般array_column是获取二维数组的制定列,组成新的数组输出。2、可以指定目标数组中哪一列作为新数组的值和哪一列作为新数组的键名。
在laravel中,“DB::raw()”方法用于复杂的sql查询,该方法能够将查询到的结果集当成一个临时表,然后使用laravel的查询构造器语法进行分页处理,语法为“DB::raw('函数或者字段');”。
在学习PHP过程中,大家应该都有接触过时间戳,下面是小编整理的一些Laravel框架中时间戳的使用技巧,觉得挺实用的,因此给大家简单介绍一下,感兴趣的朋友就继续往下看吧。
这篇文章主要介绍介绍使用TP5框架实现签到功能,对于新手学习PHP具有一定借鉴价值,感兴趣的朋友可以参考下,下面就跟随小编一起学习下吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008