php7如何开启强类型模式

广告:宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取~~~

php7如何开启强类型模式

本篇文章给大家介绍一下php7开启强类型模式的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

我们知道php是一种弱类型的编程语言,但是php7已经有所改变,可以支持代码开启强类型模式了,好消息。

php7开启强类型模式,这是php7相比之前版本效率提高的部分原因,先来看两个例子

首先

<?phpfunction sum($a,$b):float{        return $a+$b;}var_dump(sum(1,2));var_dump(sum(1,2.5));?>
登录后复制

输出结果为:

float(3) float(3.5)
登录后复制

然后加上强类型模式

<?phpdefine(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,结果也没有什么问题,但是一般来说这种隐式的转化太过于难理解,可能不是我们预期的结果。

所以我们加入强类型模式来看一下输出结果,代码如下:

<?phpdeclare(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类型导致程序出现错误。

如果遇到这种情况,让我们通过捕获异常的方式来捕获这种错误

代码如下:

<?phpdeclare(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
登录后复制

推荐学习:php视频教程

以上就是php7如何开启强类型模式的详细内容,更多请关注9543建站博客其它相关文章!

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。
作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:web前端和引擎前端区别
下一篇:浅析laravel软删除的数据怎么还能读

发表评论

关闭广告
关闭广告