1
resposta

Erro ao parsear request

O meu método store no SeriesController deu o seguinte erro:

App\Mail\SeriesCreated::__construct(): Argument #3 ($qtdTemporadas) must be of type int, string given, called in /home/guilherme/Development/Study/PHP/Laravel/Projects/controle-series/app/Http/Controllers/SeriesController.php on line 47

Como é que não deu o mesmo erro no vídeo??

Em teoria o PHP recebe o Request como string, o parâmetro no construtor da classe do email está tipado para receber int...era para dar erro...fiquei curioso agora.

Tive que parsear para int aqui para funcionar:

$email = new SeriesCreated(
    $serie->nome,
    $serie->id,
    (int)$request->seasonsQty, // <-- aqui
    (int)$request->episodesPerSeason // <-- e aqui
);
1 resposta

Oi Guilherme, tudo bem?

Pode ser que no curso tenha sido utilizado uma versão do Laravel em que a conversão automática de tipos estava ativada. No entanto, é importante lembrar que a conversão automática de tipos pode ser imprevisível e pode levar a erros inesperados. Por isso, é sempre recomendado fazer a conversão manualmente, como você fez no seu código.

Ao utilizar (int)$request->seasonsQty e (int)$request->episodesPerSeason, você está convertendo as strings recebidas do objeto Request para o tipo int, garantindo que o construtor da classe SeriesCreated receba os valores corretos.

Essa é uma boa prática a se seguir para evitar erros de tipo e garantir que o código funcione corretamente em diferentes versões do Laravel.

Espero ter ajudado!

Caso tenha dúvidas, fico à disposição

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software