在php(?int)中类​​型声明之前的问号(?)是什么

时间:2018-03-21 10:43:39

标签: php php-7.2

我在他们使用的https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Console/Output/Output.php第40行看到了这段代码?int。

public function __construct(?int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = false, OutputFormatterInterface $formatter = null)
    {
        $this->verbosity = null === $verbosity ? self::VERBOSITY_NORMAL : $verbosity;
        $this->formatter = $formatter ?: new OutputFormatter();
        $this->formatter->setDecorated($decorated);
    }

1 个答案:

答案 0 :(得分:18)

它被称为Nullable types

?int定义为intnull

  

现在可以通过在类型名称前加上问号前缀来将参数和返回值的类型声明标记为可为空。这表示除了指定的类型外,NULL还可以作为参数传递,或者分别作为值返回。

示例:

function nullOrInt(?int $arg){
    var_dump($arg);
}

nullOrInt(100);
nullOrInt(null);

function nullOrInt将接受null和int。

参考:http://php.net/manual/en/migration71.new-features.php