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
{
$this->bar;
}
}
$address = new Foo();
$address->setBar(null);
echo $address->getBar() ?? 'john doe';
Auteur: Équipe W3DStatut : PubliéeQuestion passée 1065 fois
Modifier
2
Évaluations de la communauté
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.
Autre
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
Questions similairesPlus de questions sur PHP
7
Code PHP qui lève une erreur.4
Est-ce que cette signature de fonction est valide ?
```php
<?php
interface Demo
{
public function bar(): ?mixed;
}
```3
Utiliser l'expression match en PHP pour afficher une chaîne de caractères.3
Vérifier si une valeur est dans un tableau en PHP3
Quelle signature de fonction est valide ?