web-dev-qa-db-fra.com

Que signifie le point d'interrogation (?) Avant la déclaration de type dans php (? Int)

J'ai vu ce code dans https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Console/Output/Output.php numéro de ligne 40 qu'ils utilisent? 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);
    }
17
Jagadesha NH

C'est appelé Nullable types.

Ce qui définit ?int comme int ou null.

Les déclarations de type pour les paramètres et les valeurs de retour peuvent désormais être marquées comme nullables en préfixant le nom du type avec un point d'interrogation. Cela signifie que, outre le type spécifié, NULL peut être passé en argument ou renvoyé en tant que valeur, respectivement.

Exemple :

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

nullOrInt(100);
nullOrInt(null);

la fonction nullOrInt acceptera à la fois null et int.

Réf: http://php.net/manual/en/migration71.new-features.php

25
Ataur Rahman