跳到主要内容
PHP

php函数参数 中的 ?string $a;和?string $a=null区别,为什么?string $a;不传递参数报错

管

管理员

PHP

2024年03月30日 2,220 次阅读
本页目录

在PHP中,?string $a和?string $a = null定义了函数的参数,允许参数类型为 string 或者 null。区别在于默认值的设置。
?string $a: 这表明 $a 可以是 string 类型也可以是 null,但是调用函数时必须显式地传递一个值给 $a,哪怕是传递一个 null 值。
?string $a = null: 这不仅表明 $a 可以是 string 或 null,而且如果在调用函数时没有传递 $a 参数,它会自动使用默认值 null。 当你声明了类型为 ?string 的参数 $a,但是在调用函数时没有传递任何值给 $a,PHP会报错因为它期待有一个值(即使是 null),而不是没有参数。如果你希望参数是可选的并且默认为 null,就应该在声明时指定默认值 null。

简单来说一个是针对传递的参数值本身,一个针对参数是否设置,就像isset和isnull。


可以参考dart语言的可选位置参数,为什么这样设计了。

https://dart.dev/language/functions#named-parameters

Related

相关文章

同分类文章 →
2026年07月11日 PHP

laravel什么样的方法适合放在模型中?什么适合用专门的服务类? cachedFavIds适合放在模型中吗?

一、适合放在模型中的方法Laravel 采用 ActiveRecord 风格,模型本身就是"数据 + 围绕该数据的操作"的载体。以下几类方法适合放模型: 关联关系:belongsTo、morphTo、hasMany 等。如 UserFav::userfavable()、UserFav::us

2026年04月13日 PHP

Vue3 静态文件放在同域名 Laravel 项目下

核心思路是:Vue3 构建后的静态文件放到 Laravel 的 public/ 目录下,通过 Laravel 路由的 catch-all 机制让 SPA 的前端路由正常工作。方案说明以 xx.com/admin 为例,整体架构如下:请求流程:xx.com/admin/* → Laravel

2025年08月18日 PHP

Laravel Eloquent 中可以通过静态方式调用的方法

在 Laravel Eloquent 中,可以通过静态方式调用的方法包括:1. 查询作用域 (Scopes)// 可以静态调用UserComment::active()->get();UserComment::where('status', 1)->first();2. Eloquent 内置的查询方法UserComment::fi

WeChat

扫码加我微信

微信二维码