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

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

考虑这段代码:

public function foo(?array $optionalParam);
public function 
public function foo(array $optionalParam = null);
public function foo(array $optionalParam = null);

然后是这个:

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

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

回答

首先,?在类型之前,而不是之后......除此之外:

使用

你被迫通过一些东西,可以是null或者是array,事实上:

在哪里使用

将接受<?php function foo(?array $optionalParam){ echo "test"; } foo(); // doesn't work foo(null); // works foo([]); // works

e>null、 anarray或 0 参数

<?php function foo(array $optionalParam = null){ echo "test"; } foo(null); // works foo(); // work foo([]); // works

>


以上是"?"和有什么不一样?和PHP函数参数中的“=null”的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>