在 php (?int) 中,类型声明前的问号 (?) 是什么意思

2022-08-30 09:52:15

我在 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

它被称为.Nullable types

它定义为 或 。?intintnull

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

例:

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

nullOrInt(100);
nullOrInt(null);

函数将同时接受 null 和 int。nullOrInt

编号: http://php.net/manual/en/migration71.new-features.php


答案 2

推荐