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

PHP中以下四种函数定义方式有何区别?

PHP中四种函数定义方式的区别

下面逐一拆解四种写法的核心差异:

1. function some_func(string|null $some_arg)

  • 这是PHP 8.0引入的联合类型声明,明确限定参数$some_arg的类型只能是string或null
  • 参数必须显式传入,不能省略;不传参数会直接触发报错
  • 合法调用:some_func('hello')、some_func(null);非法调用:some_func()

2. function some_func(?string $some_arg)

  • 这是string|null联合类型的语法糖,功能和第一种完全一致
  • 写法更简洁,语义无区别:参数必须传入,类型只能是string或null
  • 同样,some_func()属于非法调用,仅传入string或null才合法

3. function some_func(string $some_arg = null)

  • 参数是可选参数,调用时不传参则使用默认值null
  • 类型声明为string,但因默认值是null,PHP会隐式允许传入null(无需显式声明nullable类型)
  • 合法调用:some_func()、some_func('world')、some_func(null)
  • 特点:语义相对隐晦,需通过默认值推断参数允许null,严格类型模式下行为与第四种一致

4. function some_func(?string $some_arg = null)

  • 这是显式nullable类型+可选参数的组合,语义最清晰
  • 参数可选,不传参时用默认值null;传参时允许string或null
  • 合法调用与第三种完全一致,但写法直接明确参数允许null,无需依赖默认值推断
  • 优势:在团队协作或大型项目中,可读性和维护性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:50:33