Gérer une Maybe¶
La seule façon d'extraire une donnée d'une Maybe est via sa méthode match. Cette méthode oblige de gérer le cas où il n'y a pas de donnée.
Si par exemple dans la méthode expose d'un de nos aggregats vous voulez ajouter une propriété qui est dans une Maybe voici comment faire :
public function expose(): array
{
$data = [
'id' => $this->id->toString(),
];
$someProp = $this->someProp->match(
static fn($value) => $value,
static fn() => null,
);
if (!\is_null($someProp)) {
$data['someProp'] = $someProp;
}
return $data;
}
Le problème de cette approche est qu'on passe par une version moins typée de notre donnée pour effectuer notre logique. Au final on doit gérer 2 fois le cas où la donnée existe, dans le match et le if.
public function expose(): array
{
$data = [
'id' => $this->id->toString(),
];
$data = $this->someProp->match(
static fn($value) => \array_merge(
$data,
['someProp' => $value],
),
static fn() => $data,
);
return $data;
}
Cette version permet de ne gérer qu'à un seul endroit si la donnée existe ou non. Les premières fois cette façon d'écrire est moins facile à lire mais ça devient plus simple à manipuler dans le temps.