PHP7.0启用严格模式可强制校验函数参数和返回值类型,避免隐式转换;需在文件首行添加declare(strict_types=1),参数与返回值类型声明不可省略且必须匹配。

在PHP7.0中启用严格模式能提前暴露类型不匹配、隐式转换等潜在错误,避免运行时行为不符合预期。开启后函数参数和返回值类型声明将强制校验,不再容忍弱类型混用。
启用严格模式的两种方式
方法一:在文件顶部添加声明语句
在PHP文件第一行(必须是首行,前面不能有任何空格、BOM或注释)写入:declare(strict_types=1);
方法二:通过php.ini全局配置(不推荐)
修改php.ini中的zend.assertions设为1,并配合assert.exception=1,但这仅影响assert()行为,无法替代strict_types对类型声明的约束。
参数类型声明必须显式指定
第一步:定义函数时明确写出参数类型
例如:function add(int $a, int $b): int { return $a + $b; }
第二步:调用时传入非int值会直接报Fatal erroradd("1", "2"); → 触发TypeError,不会自动转换为整数。这与弱类型模式下静默转为0不同。
第三步:数组键名、对象属性访问不受strict_types影响
strict_types只作用于函数调用时的参数传递和返回值校验,不改变数组索引解析或对象属性赋值规则。
返回值类型声明不可省略
在函数签名末尾加冒号和类型即可,如: string或: ?array。
如果函数实际返回null但声明了: array,会抛出TypeError;若声明: ?array则允许返回null。
注意:void类型只能用于无返回值函数,且不能写return $value;



















