关于declare(strict_types=1)的有效范围

本文详细探讨了PHP中的`declare(strict_types=1)`声明的使用位置和作用范围。在单个文件中,应将它置于文件开头;不能在脚本中间插入。当涉及多个文件时,严格模式只在声明它的文件中生效,不会影响未声明的被引用文件。在函数定义部分或主体部分使用`strict_types`会产生不同的效果,严格模式只在调用处生效,而非定义处。总结指出,`strict_types`影响的是声明它的文件及其中的所有代码,包括调用的外部函数。
摘要由CSDN通过智能技术生成
declare(strict_type=1);是php7引入的 严格类型检查模式的指定语法

单个文件时strict_types应写在哪里

基本语法

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

var_dump(add(1.0, 2.0));

在此状态下执行独立时,输出int(3)

我们提供的是double类型,但php7能很好的处理它,和php5时代没什么区别

做了如下变更

<?php
declare(strict_types=1);    //加入这句

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

var_dump(add(1.0, 2.0));

TypeError产生,如下

PHP Fatal error:  Uncaught TypeError: Argument 1 passed to add() must be of the type integer, float given, called in /Users/hiraku/sandbox/stricttypes/A.php on line 9 and defined in /Users/hiraku/sandbox/stricttypes/A.php:4
Stack trace:
#0 /Users/hiraku/sandbox/str
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值