带有问号(?type)的php方法参数类型暗示
我只是感觉到在方法类型提示中使用问号的php(symfony/laravel)代码片段:带有问号(?type)的php方法参数类型暗示,php,Php,我只是感觉到在方法类型提示中使用问号的php(symfony/laravel)代码片段: public function functionName(?int $arg = 0) 在其他情况下,?类型不是最后一个,但我还没有找到任何没有默认值的类型 问题是,我找不到有关此的任何信息,我检查了: 在这里: 在这里: 在这里: 与7.2相同,但由于该代码只需要7.1,因此看起来相当正常 我也在谷歌上搜索过,但不是没有记录,就是问号主题正在击败搜索引擎 所以我现在觉得有点傻,如果有人能告诉我这个问
public function functionName(?int $arg = 0)
在其他情况下,?类型不是最后一个,但我还没有找到任何没有默认值的类型
问题是,我找不到有关此的任何信息,我检查了:
- 在这里:
- 在这里:
- 在这里:
谢谢这是php7.1中的一项新功能 问号表示类型提示参数(或返回值)也允许为null
因此,在您的示例中,$arg可以是null或任何整数。只需在前面的答案中添加一个注释-它必须是
null
或具有指定类型的值,即-您不能忽略它-请看一个示例:
class测试类{
公共函数获取(?数组$extensions)
{
//...
}
}
现在如果你打电话
(新TestClass)->fetch();
这个会扔
ArgumentCountError:参数太少,无法使用函数fetch()
要使它在不传递$extensions
数组的情况下工作,必须以null
作为参数调用它
(new TestClass)->fetch(null);
在将参数初始设置为null
传递给另一个处理方法(即
class测试类{
公共函数获取(数组$extensions=null)
{
//...
$this->filter($extensions);
}
专用函数筛选器(?数组$extensions)
{
//...
}
}
现在您可以调用fetch
方法,而无需参数
(新TestClass)->fetch();
考虑以下功能:
<?php
function testFnc1(string $param)
{
var_dump($param);
}
function testFnc2(string $param = 'some string')
{
var_dump($param);
}
function testFnc3(string $param = null)
{
var_dump($param);
}
function testFnc4(?string $param)
{
var_dump($param);
}
function testFnc5(?string $param = 'some string')
{
var_dump($param);
}
function testFnc6(?string $param = null)
{
var_dump($param);
}
你说得对,哈哈。最糟糕的是我知道返回值的含义。感谢您的启发,而且它具有完美的意义,没有默认值,您只有权使用问号将参数显式设置为null,使用问号,您可以完全忽略它。使用private function filter(?array$extensions)
和private function filter有什么区别(数组$extensions=null)