当前位置:首页 > 记忆回溯 > 正文内容

php如何理解严格模式declare(strict_types=1)?

MuWinds1年前 (2024-01-20)记忆回溯162

严格模式的写法:

decleare(strict_type=1);

严格模式的声明需要放到php文件的最顶端,否则会抛出错误:

Fatal error: strict_types declaration must be the very first statement in the script

这个声明的类型属于是没有错误去制造错误,主要就是检测变量的类型type,如果不对,就会报错。值得特别说明的是:如果没有定义严格模式的话,这些类型错误很有可能都是可以接受的,并不会报错。

For example:

<?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:4Stack trace:
#0 /Users/hiraku/sandbox/stricttypes/A.php(9): add(1, 2)
#1 {main}
  thrown in /Users/hiraku/sandbox/stricttypes/A.php on line 4
标签: php严格模式

“php如何理解严格模式declare(strict_types=1)?” 的相关文章

中学电学必修:电表电路原理

初中的时候老师告诉我们看电压表电流表在电路里时,将电流表充当导线,电压表充当断路。这里简单说一下原因。任何一个电压表和电流表都由灵敏电流计配合大电阻组成:原理图可以看出:电流表中的R用来分G的电流,并以此来达到更大的量程;电压表的R用来分G的电压,也可以得到更大的量程。灵敏电流计是有电阻的,但是电阻...

PEP8 PYTHON 編碼規範手冊

PEP 8 介紹PEP8 是 Python 社群共通的風格指南,一開始是 Python 之父 Guido van Rossum 自己的撰碼風格,慢慢後來演變至今,目的在於幫助開發者寫出可讀性高且風格一致的程式。許多開源計畫,例如 Django 、 OpenSt...

PHP 程式碼風格PSR

PSR-1:基本程式寫作標準1. 總覽檔案只能使用 <?php 和 <?= 標籤檔案字元編碼只能用 UTF-8 檔首無 BOM檔案應該只宣告符號 (class、function、constant)或是造成副作用(例如產生輸出、修改 .ini 檔之類)兩者擇一不應該兩個都做Namespac...

两个物块动量定理的二级结论整理

还是那样子,死记硬背没用这就是纯纯算数的活儿,理儿都摆在这了。一个经典的模型是一个物块以速度v撞向另外一个静止的物块,符合动量守恒:思考题:两个滑块相互碰撞,仍然是理想模型,动量守恒能量守恒,推导v1/v2...

go gin框架实现限流

接手一个项目,甲方希望在项目中实现指定用户的限流,这需要我们在go项目中实现一个限流器。限流器的实现有很多经典的思想,不过令牌桶的思路简单,运行效率高,它是以恒定的速度往木桶里加入令牌,木桶满了则不再加入令牌。服务收到请求时尝试从木桶中取出一个令牌,如果能够得到令牌则继续执行后续的业务逻辑。如果没有...

数据结构——堆(Heap)大根堆、小根堆

转载:https://www.cnblogs.com/wangchaowei/p/8288216.htmlHeap是一种数据结构具有以下的特点:1)完全二叉树;2)heap中存储的值是偏序;Min-heap: 父节点的值小于或等于子节点的值;Max-heap: 父节点的值大于或等于子节点的值;堆的存...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。