• 技术文章 >后端开发 >PHP7

    php7如何开启强类型模式

    醉折花枝作酒筹醉折花枝作酒筹2021-06-01 09:17:09转载103
    本篇文章给大家介绍一下php7开启强类型模式的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

    我们知道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

    推荐学习:php视频教程

    以上就是php7如何开启强类型模式的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:php 强类型
    上一篇:PHP7如何使用set_error_handler和set_exception_handler处理异常机制 下一篇:如何解决php7无法加载curl的问题
    第16期线上培训班

    相关文章推荐

    • 在centos7中如何为php7安装redis扩展• php7连接MySQL如何制作简易查询程序• PHP7如何能够连接数据库• PHP7下如何安装并使用xhprof性能分析工具• PHP7如何使用set_error_handler和set_exception_handler处理异常机制

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网