php 7.0+ 引入标量类型声明,支持int、float、string、bool参数及返回值类型约束;需用declare(strict_types=1)启用严格模式,否则为弱类型自动转换;仅作用于用户函数且限当前文件。

PHP 7.0+ 引入了标量类型声明(Scalar Type Declarations),允许你在函数参数和返回值中明确指定 int、float、string、bool 这四种标量类型。它不是“内置函数”,而是一种语法特性,需配合 declare(strict_types=1) 控制严格模式行为。
启用严格类型检查
必须在文件顶部(且前面不能有任何输出或声明)加上:
declare(strict_types=1);否则默认为弱类型(coercive)模式,PHP 会尝试自动转换类型(如把字符串 "123" 转成整数 123)。
参数类型声明用法
直接在参数前写类型名即可:
function add(int $a, float $b): float {
return $a + $b;
}
- 调用
add(5, 3.14)✅ 正常执行 - 调用
add("5", 3.14)❌ 严格模式下抛出TypeError - 不加
declare(strict_types=1)时,"5"会被转为5,不报错
返回值类型声明用法
在函数签名末尾用冒号 : 加类型:
function getAge(): int {
return "25"; // 严格模式下会报错:返回值必须是 int
}
- 返回值必须与声明类型完全一致,不接受隐式转换
- 可声明为
void表示无返回值(PHP 7.1+) - 支持
nullable返回(PHP 7.1+):function getName(): ?string表示可返回string或null
常见注意事项
- 类型声明只对用户定义的函数有效,不影响 PHP 内置函数(如
strlen()、array_merge()) -
declare(strict_types=1)只影响当前文件,不会跨文件生效 - 类方法、匿名函数、闭包同样支持参数和返回值类型声明
- 数组类型用
array,对象类型用类名(如DateTime),PHP 7.4+ 支持object类型
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











