Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao declarar as variáveis como readonly

Boa tarde,

Meu código está com erro ao declarar as variáveis na classe de eventos SeriesCreated. Ao colocar a variável como public readonly, as mesmas não são reconhecidas, ficam apresentando erro e ao tentar executar o sistema, dão o seguinte erro:

ParseError
syntax error, unexpected identifier "string", expecting variable

Até copiei o código utilizado na aula, pra garantir que não havia erro na digitação, mas não consegui identificar o problema. Segue o código

Event/SeriesCreated

class SeriesCreated
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct( 
        public readonly string $seriesName,
        public readonly int $seriesId,
        public readonly int $seriesSeasonsQty,
        public readonly int $seriesEpisodesPerSeason,
    ){}

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('channel-name');
    }
}

Listener/EmailUsersAboutSeriesCreated

public function handle(SeriesCreatedEvent $event)
    {
        $userList = User::all();

        foreach ($userList as $index => $user) {
            $email = new SeriesCreated(
                $event->seriesName,
                $event->seriesId,
                $event->seriesSeasonsQty,
                $event->seriesEpisodesPerSeason,
            );

            $when = now()->addSeconds($index * 5);
            Mail::to($user)->later($when, $email);
        }
    }
1 resposta
solução!

Consegui identificar o problema. No vídeo Novidades do PHP 8.1 - Readonly properties | Dias de Dev é explicado que o readonly é uma feature do PHP 8.1 e como estava utilizando a versão 8.0 apresentava este erro. Depois de instalar e configurar a nova versão, o erro sumiu e o código voltou a funcionar.