Hard
What will this code display?
<?php
class Foo
{
private ?string $bar;
public function setBar(?string $secondLine): void
{
$this->bar = $secondLine;
}
public function getBar(): ?string
{
$this->bar;
}
}
$address = new Foo();
$address->setBar(null);
echo $address->getBar() ?? 'john doe';
Author: W3D TeamStatus: PublishedQuestion passed 1010 times
Edit
1
Community Evaluations
Cyrille
03/10/2023
'john doe' est pour moi la bonne réponse et pourtant, j'ai faux à cette question. $bar est setté à null. Dans l'expression "$address->getBar() ?? 'john doe';", $address->getBar() devrait est égal à false.
Other
Julien HUMBERT06/11/2023
C'est un piège, je suis passé à côté du return manquant, on ne s'attend pas dans un getter (de plus généré automatiquement par l'IDE, ou par copilot maintenant) à avoir le return manquant.
Pour moi la réponse faisait suite à la première question où là il y avait vraiment une erreur à cause de $bar non initialisé, et donc savoir ce qui s'affiche vraiment quand on utilise l'opérateur ??
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