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

Trait x Class

Olá, minha dúvida é mais conceitual

Eu não entendi muito bem a razão de se usar Trait e não fazer uma Class. Veja bem, quando usamos um usuário, na aplicação do curso, fazemos:

$curso = new Curso();
...

Por qual motivo eu não poderia fazer o FlashMessageTrait como sendo uma classe, algo como se segue:

 class FlashMessage{
     public function defineMensagem(string $tipo, string $mensagem): void
    {
        $_SESSION['mensagem'] = $mensagem;
        $_SESSION['tipo_mensagem'] = $tipo;
    }
}

E no meu controller, no momento do uso, eu instanciaria uma FlashMessage assim como eu instancio um $curso.

$flashMessage = new FlashMessage();
$flashMessage->defineMensagem($tipo, $mensagem);

ou apenas

(new FlashMessage)->defineMensagem($tipo, $mensagem);

Essa classe teria um "import" igual à classe de curso, pelo seu namespace.

Isso tem a ver com padrões de projeto, boas práticas, algo assim? Ou é apenas uma questão de gosto mesmo?

Pq na minha ótica, que ainda é bem curta, a Trait é quase como um require de um arquivo com um conjunto de functions para uma outra Class. Um require elegante.

Obrigado pela atenção.

1 resposta
solução!

Poderia tranquilamente, Naun. É só uma escolha de design mesmo e uma forma da gente praticar o uso de traits. :-)

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