Question du test PHP8

Code PHP qui lève une erreur.

Difficile

Que va afficher ce code ?

<?php

class Foo
{
    private ?string $bar;

    public function setBar(?string $secondLine): void
    {
        $this->bar = $secondLine;
    }

    public function getBar(): ?string
    {
        return $this->bar;
    }
}

$foo = new Foo();
echo $foo->getBar() ?? 'john doe';
Auteur: Équipe W3DStatut : PubliéeQuestion passée 1127 fois
Modifier
8
Évaluations de la communauté
developer avatar
Laurent
22/08/2024
Pas trop d'accord avec la réponse à cette question et pourtant dans sandbox php8, c'est bien la bonne réponse. Comme quoi on en apprend tous les jours!
developer avatar
Maxime
04/11/2024
j'ai eu tellement de fois cette erreur !
developer avatar
Mami
12/04/2024
Moi aussi, j'ai choisi 'john doe'. Malheuresement, c'est uncaught error car on n'a pas encore initialisé la propriété $bar. Grave!
developer avatar
David
18/02/2024
pour moi ca affiche john doe...
developer avatar
Paul TOTI
06/05/2024
Si $bar n'a jamais été défini, elle est null par défaut en raison de son type nullable ( ?string). L'accès à une propriété nullable non initialisée qui est lue (et non écrite ou utilisée dans un contexte nécessitant une valeur non nulle) retourne simplement null. Il n'y a pas d'erreur car PHP gère cette situation de manière interne en retournant null
developer avatar
Vincent
06/05/2024
Pas en php 8. Si on ne l'initialise pas explicitement à null, on a une erreur, alors qu'en php 7 effectivement elle était implicitement initialisée à null.