"?" 和有什么不一样?和 PHP 函数参数中的“= null”

若昂·佩德罗·马丁斯·德保拉

我正在做一些研究,但无法找到答案(可能是因为我没有正确搜索)

考虑这段代码:

public function foo(?array $optionalParam);

然后是这个:

public function foo(array $optionalParam = null);

它们之间有什么区别?使用 PHPstorm 我注意到当我使用 时?,它会创建一个 PHPdoc 并将变量类型标记为type|null. 但是当我在没有那个参数的情况下调用函数时,PHP 会在我脸上尖叫“你在开玩笑吗?$optionalParam 在哪里”。另一方面,我设法毫无问题地使用了该=null选项。

对不起,如果这个问题太简单了,但我没有在网上找到任何答案。

亚历山大·埃尔绍博克希

这是一个 PHP 7.1 特性,称为Nullable Types

你写的两行是相同的。

array ?$optionalParam : either an array or null

array $optionalParam = null : either an array or null

使用?您仍然需要在调用函数时添加参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

-I和有什么不一样。和-Ilib在Perl6中?

PHP 和 WebView - Cookie 不一样

UNION查询在mysql中有效,但在php中不一样

为什么%运算符在Python和Java中不一样?

为什么在Python中安装软件包和模块不一样?

为什么在浏览器和终端中字体不一样?

为什么用php创建了excel文件,而浏览器中的tabel却不一样?

Python 2 和 Python 3 内置的 all() 函数表现不一样

R中的posix时间比较在for循环和Apply函数中表现不一样

“ |”和有什么不一样 和“或”?

:和true和有什么不一样?

with和env和有什么不一样

"this" 和 "::" 和有什么不一样?

PRECISION LENGTH` 和有什么不一样?

为什么这个箭头函数与签名相同的非箭头函数不一样?

在这种情况下,为什么在JavaScript中与var不一样

为什么每个图片在我的列表中呈现的方式都不一样

为什么ref int值与C#7.3中的原始值不一样?

为什么选项卡在Android中不一样?

为什么datetime在数据库中显示不一样?

在meteorJS中,为什么hideFinished的写法不一样?

matplotlib中的imhsow与opencv显示不一样

和Java(Intellij IDEA)一样,Php(PhpStorm)中是否有一些国际化的东西

NetGear A6100 AC600 无线适配器在 Ubuntu 20.04 中不起作用。在 18.04 中工作正常。和之前的问题不一样

“(...);”和有什么不一样?和“ {......}”有反应吗?

dash 和 Dock 和有什么不一样?

“ git checkout-”和有什么不一样?和“ git reset HEAD --hard”?

unbound 和 unwind 和有什么不一样?

mockito-core和mockito-all和有什么不一样