You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP方法定义中冒号问号加类名(:?类名)的语法是什么含义?

PHP方法名后接?:类名语法的含义

该语法是PHP 7.1版本引入的可为空返回类型声明,用于明确限定方法的合法返回值范围,具体规则如下:

  • 冒号后标注的类名是方法允许返回的对象类型
  • 类名前的问号表示返回值允许为null
  • 方法只能返回指定类的实例或null,返回其他类型值时PHP会抛出TypeError类型错误

你给出的简化代码示例:

public function someMethod(): ?SomeClass

表示someMethod方法的返回值只能是SomeClass类的实例,或者null。

完整函数示例的含义:

public function getParentProject(): ?ParentProjectTester
{
    return $this->parentProject;
}

这段代码明确要求getParentProject方法只能返回ParentProjectTester类的实例,或者null。如果$this->parentProject的实际值是字符串、整数、其他类实例等非指定类型内容,代码运行时会直接抛出类型错误。

补充说明:PHP 7.0版本就已经支持不带问号的返回类型声明(如: SomeClass),要求方法必须返回指定类的实例,不允许返回null,PHP 7.1新增的问号语法就是为了兼容需要返回空的业务场景。

内容的提问来源于stack exchange,提问作者Robert Sinclair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 10:33:00