54

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

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);
    }
4

1 回答 1

79

它被称为Nullable types

其中定义?intintor null

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

例子 :

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

nullOrInt(100);
nullOrInt(null);

函数nullOrInt将接受 null 和 int。

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

于 2018-03-21T10:46:07.913 回答