zoukankan      html  css  js  c++  java
  • PHP 标量类型与返回值类型声明

    标量类型声明

    默认情况下,所有的PHP文件都处于弱类型校验模式。

    PHP 7 增加了标量类型声明的特性,标量类型声明有两种模式:

    • 强制模式 (默认)
    • 严格模式

    标量类型声明语法格式:

    declare(strict_types=1); 
    

    代码中通过指定 strict_types的值(1或者0),1表示严格类型校验模式,作用于函数调用和返回语句;0表示弱类型校验模式。

    可以使用的类型参数有:

    • int

    • float

    • bool

    • string

    • interfaces

    • array

    • callable

    强制模式实例

    实例

    <?php 
    // 强制模式 
    function sum(int ...$ints) 

       return array_sum($ints); 


    print(sum(2, '3', 4.1)); 
    ?>

    以上程序执行输出结果为:

    9
    

    实例汇总将参数 4.1 转换为整数 4 后再相加。

    严格模式实例

    实例

    <?php 
    // 严格模式 
    declare(strict_types=1); 

    function sum(int ...$ints) 

       return array_sum($ints); 


    print(sum(2, '3', 4.1)); 
    ?>

    以上程序由于采用了严格模式,所以如果参数中出现不适整数的类型会报错,执行输出结果为:

    PHP Fatal error:  Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……
    

    返回类型声明

    PHP 7 增加了对返回类型声明的支持,返回类型声明指明了函数返回值的类型。

    可以声明的返回类型有:

    • int

    • float

    • bool

    • string

    • interfaces

    • array

    • callable

    返回类型声明实例

    实例中,要求返回结果为整数:

    实例

    <?php 
    declare(strict_types=1); 

    function returnIntValue(int $value): int 

       return $value; 


    print(returnIntValue(5)); 
    ?>

    以上程序执行输出结果为:

    5
    

    返回类型声明错误实例

    实例

    <?php 
    declare(strict_types=1); 

    function returnIntValue(int $value): int 

       return $value + 1.0; 


    print(returnIntValue(5)); 
    ?>

    以上程序由于采用了严格模式,返回值必须是 int,但是计算结果是float,所以会报错,执行输出结果为:

    Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned...
    

    void 函数

    一个新的返回值类型void被引入。 返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return 语句。 对于 void 函数来说,NULL 不是一个合法的返回值。

    返回的类型还有 void,定义返回类型为 void 的函数不能有返回值,即使返回 null 也不行。

    void 函数可以省去 return 语句,或者使用一个空的 return 语句。

    实例

    <?php
    function swap(&$left, &$right) : void
    {
        if ($left === $right) {
            return;
        }

        $tmp = $left;
        $left = $right;
        $right = $tmp;
    }

    $a = 1;
    $b = 2;
    var_dump(swap($a, $b), $a, $b);

    以上实例输出结果:

    null
    int(2)
    int(1)
  • 相关阅读:
    原型模式&原型链
    [四种方法]检测数据类型
    JSON
    PHP基础 mysqli的事务处理
    PHP的扩展类 mysqli_stmt:预处理类
    PHP的 Mysqli扩展库的多语句执行
    PHP基础文件下载类的简单封装
    PHP基础封装简单的MysqliHelper类
    Spring深入浅出(四)AOP面向切面
    Spring深入浅出(二)IOC的单例 ,继承,依赖,JDBC,工厂模式以及自动装载
  • 原文地址:https://www.cnblogs.com/yc10086/p/12863221.html
Copyright © 2011-2022 走看看