PHP怎样对变量进行类型提示

来源:微信开发网作者:厦门程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《PHP怎样对变量进行类型提示》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《PHP怎样对变量进行类型提示》有用,将其分享出去将是对创作者最好的鼓励。

PHP从5.0版本开始逐步引入类型提示功能,后续版本不断完善相关特性,通过类型提示可以明确指定变量、函数参数、返回值等的数据类型,让代码逻辑更清晰,也能在开发阶段提前发现类型不匹配的问题。

PHP怎样对变量进行类型提示

函数参数类型提示

在函数定义时,可以给参数指定预期的类型,当传入的参数类型不符合要求时,PHP会抛出TypeError错误。支持的类型包括标量类型、复合类型和自定义类类型。

以下是基础的函数参数类型提示示例:

<?php
// 指定参数必须为字符串类型
function printName(string $name) {
    echo "姓名:" . $name;
}

// 指定参数必须为数组类型
function sumArray(array $nums) {
    return array_sum($nums);
}

// 指定参数必须为自定义类的实例
class User {}
function handleUser(User $user) {
    echo "处理用户对象";
}

// 正确调用
printName("张三");
sumArray([1, 2, 3]);
$user = new User();
handleUser($user);

// 错误调用,会抛出TypeError
printName(123);
?>

返回值类型提示

PHP 7.0及以上版本支持返回值类型提示,在函数定义末尾通过冒号加类型的方式指定函数返回值的类型,若返回值类型不匹配同样会抛出错误。

返回值类型提示的示例如下:

<?php
// 指定返回值必须为int类型
function add(int $a, int $b): int {
    return $a + $b;
}

// 指定返回值可以为null,需要加?前缀
function getUserById(int $id): ?User {
    if ($id > 0) {
        return new User();
    }
    return null;
}

class User {}

// 正确调用
$result = add(1, 2);
$user = getUserById(1);

// 错误调用,返回值类型不匹配
function wrongReturn(): string {
    return 123;
}
?>

类属性类型提示

PHP 7.4及以上版本支持类属性的类型提示,在定义类属性时可以直接指定属性的类型,不需要再通过构造函数或者setter方法手动校验类型。

类属性类型提示的示例如下:

<?php
class Product {
    // 属性类型提示,指定为字符串
    public string $name;
    // 属性类型提示,指定为float,允许为null
    public ?float $price;
    // 属性类型提示,指定为数组
    public array $tags;

    public function __construct(string $name, ?float $price, array $tags) {
        $this->name = $name;
        $this->price = $price;
        $this->tags = $tags;
    }
}

$product = new Product("手机", 2999.99, ["电子", "数码"]);
// 错误赋值,会抛出TypeError
$product->name = 123;
?>

严格类型模式

默认情况下PHP的类型提示是弱类型的,比如传入int类型的参数到string类型提示的位置,PHP会自动做类型转换。如果需要开启严格类型校验,避免自动类型转换,可以在脚本开头声明declare(strict_types=1)

严格类型的示例如下:

<?php
declare(strict_types=1); // 严格类型声明,必须放在脚本第一行

function printAge(int $age): void {
    echo "年龄:" . $age;
}

// 弱类型模式下,传入字符串"18"会自动转为int 18
// 严格模式下,传入字符串"18"会直接抛出TypeError
printAge("18");
?>

类型提示支持的类型范围

PHP的类型提示支持以下几类类型:

  • 标量类型:int、float、string、bool
  • 复合类型:array、object、callable、iterable
  • 特殊类型:null(需配合?前缀使用)、void(仅返回值可用)
  • 自定义类、接口、抽象类的类型

需要注意,类型提示不支持资源类型(resource),如果需要校验资源类型,只能通过手动判断is_resource()函数实现。

注意事项

类型提示仅对函数参数、返回值、类属性生效,普通的局部变量无法直接添加类型提示,若需要校验局部变量类型,可使用is_系列函数或者assert()函数实现。

另外,类型提示的错误是在运行时抛出的,开发阶段建议配合IDE的类型检查功能,提前发现类型不匹配的问题,减少调试成本。

<?php
// 局部变量类型校验示例
$num = "123";
if (!is_int($num)) {
    throw new InvalidArgumentException("变量必须为整数类型");
}
?>

PHP类型提示变量声明强类型修改时间:2026-07-14 00:18:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。