Composição dos apresentadores a partir de traços
Se precisarmos implementar o mesmo código em vários apresentadores (por exemplo, verificação de que o usuário está conectado), é tentador colocar o código em um ancestral comum. A segunda opção é criar características de finalidade única.
A vantagem desta solução é que cada apresentador pode usar apenas os traços de que realmente precisa, enquanto a herança múltipla não é possível em PHP.
Estas características podem aproveitar o fato de que todos os métodos de injeção são chamados sequencialmente quando o apresentador é criado. Basta ter certeza de que o nome de cada método de injeção é único.
As características podem pendurar o código de inicialização em eventos onStartup ou onRender.
Exemplos:
O apresentador então simplesmente usa estes traços: