1
resposta

Erro no MATCH

Estou com erro nessa parte do codigo: "As Branquelas" => "Comedia", "Interestellar" => "Ficcao", "O Protetor" => "Acao",

Esse é o erro: Condition is always 'true' because '$nomeFilme' is evaluated at this point

Esse erro só acontece no phpStorm, mas no vsCode não aparece nenhuma mensagem de erro

<?php

echo "Bem-vindo(a) ao screen match";

$nomeFilme = 'As Branquelas';

$anoLancamento = 2021;
$notaFilme = 8.8;
$incluidoNoPlano = true;

$genero = match ($nomeFilme) {
    "As Branquelas" => "Comedia",
    "Interestellar" => "Ficcao",
    "O Protetor" => "Acao",
};
echo "O genero do filme e: $genero";

1 resposta

Oi Geovanna!

Parece que o PHPStorm está te alertando sobre uma condição que sempre será verdadeira, enquanto o VSCode não está mostrando essa mensagem. Vamos dar uma olhada no seu código:

<?php

echo "Bem-vindo(a) ao screen match";

$nomeFilme = 'As Branquelas';

$anoLancamento = 2021;
$notaFilme = 8.8;
$incluidoNoPlano = true;

$genero = match ($nomeFilme) {
    "As Branquelas" => "Comedia",
    "Interestellar" => "Ficcao",
    "O Protetor" => "Acao",
};
echo "O genero do filme e: $genero";

O erro "Condition is always 'true' because '$nomeFilme' is evaluated at this point" está relacionado ao fato de que $nomeFilme já tem um valor definido antes de ser usado no match. Isso significa que, no contexto atual, o match sempre encontrará um valor correspondente, tornando a condição sempre verdadeira.

Para resolver isso, você pode adicionar um caso default no match para tratar qualquer valor que não corresponda aos casos fornecidos. Isso ajudará a evitar qualquer confusão e tornará o código mais robusto. Veja como ficaria:

<?php

echo "Bem-vindo(a) ao screen match";

$nomeFilme = 'As Branquelas';

$anoLancamento = 2021;
$notaFilme = 8.8;
$incluidoNoPlano = true;

$genero = match ($nomeFilme) {
    "As Branquelas" => "Comedia",
    "Interestellar" => "Ficcao",
    "O Protetor" => "Acao",
    default => "Genero desconhecido",
};
echo "O genero do filme e: $genero";

Com essa alteração, o match agora tem um caso padrão (default) que será usado se $nomeFilme não corresponder a nenhum dos valores especificados. Isso deve resolver o alerta no PHPStorm.

Espero ter ajudado e bons estudos!