搬砖笔记:函数的参考

类型声明

类型声明允许函数在调用时要求参数为特定类型。

如果给出的值类型不对,那么将会产生一个错误:
1. 在PHP 5中,这将是一个可恢复的致命错误
2. 在PHP 7中将会抛出一个TypeError异常。

为了指定一个类型声明,类型应该加到参数名前。

这个声明可以通过将参数的默认值设为NULL来实现允许传递NULL

<?php
 function test(boolean $param) {}
 test(true);
?>
    
输出:
     Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of boolean, boolean given, called in - on line 1 and defined in -:1
         
如何修改正确呢?
1.将boolean调成bool
2.将php调至7.1版本

严格类型

默认情况下,如果能做到的话,
PHP将会强迫错误类型的值转为函数期望的标量类型。
例如,一个函数的一个参数期望是string,但传入的是integer,
最终函数得到的将会是一个string类型的值。

可以基于每一个文件开启严格模式。
在严格模式中,只有一个与类型声明完全相符的变量才会被接受,
否则将会抛出一个TypeError。
唯一的一个例外是可以将integer传给一个期望float的函数。

使用 declare 语句和strict_types 声明来启用严格模式:

<?php
declare(strict_types=1);

function sum(int $a, int $b) {
    return $a + $b;
}

var_dump(sum(1, 2));
var_dump(sum(1.5, 2.5));
?>

输出
int(3)

Fatal error: Uncaught TypeError: Argument 1 passed to sum() must be of the type integer, float given, called in - on line 9 and defined in -:4
Stack trace:
#0 -(9): sum(1.5, 2.5)
#1 {main}
  thrown in - on line 4

返回值类型声明

PHP 7 增加了对返回值类型声明的支持。
就如 类型声明一样, 返回值类型声明将指定该函数返回值的类型。
同样,返回值类型声明也与 有效类型 中可用的参数类型声明一致。

严格类型 也会影响返回值类型声明。
在默认的弱模式中,如果返回值与返回值的类型不一致,则会被强制转换为返回值声明的类型。
在强模式中,返回值的类型必须正确,否则将会抛出一个TypeError异常。

<?php
function sum($a, $b): float {
    return $a + $b;
}

// Note that a float will be returned.
var_dump(sum(1, 2));
?>
以上例程会输出:

float(3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值