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.