Aqui é onde faço postagens de coisas que acho interessante.
Traits é um recurso incorporado ao PHP apartir da versão 5.4 para utilização de recursos isolados.
Observe o exemplo abaixo:
<?php
/**
* AppController class
*
**/
Abstract Class AppController{
// .....
}
/**
* Email trait
* Classe que envia email para o usuario
**/
trait Email{
/**
* enviarMensagem Method
*
* Metodo que envia mensagem de email para o usuario
*
* @package Util
* @param $mensagem String
* */
public function enviarMensagem( $mensagem = null )
{
echo $mensagem;
}
}
/**
* Compra Controller
* Classe que gerencia a compra do usuario
**/
Class CompraController extends AppController{
use Email;
/**
* finalizar Method
*
* Metodo que finaliza a compra feita pelo usuario, verifica se a compra foi aprovada
* pela operadora de cartao e dispara um aviso para o usuario via email
*
* @package Controller
*
* */
public function finalizar()
{
$compraFinalizada = true;
if( $compraFinalizada ){
$this->enviarMensagem("Sua compra foi finalizada e seu produto estará em sua casa até o dia dd/mm/YYY");
}else{
$this->enviarMensagem("Sua compra não foi aprovada pela sua operadora de cartão de créditos");
}
}
}
$Compra = new CompraController();
$Compra->finalizar();
Observe que a classe CompraController extende a classe AppController tornando impossível ela extender a classe Email para poder invocar o método enviarMensagem.
Observe que sem o recurso Traits teríamos que instanciar a classe Email dentro do método finalizar e em seguida invocar o método enviarMensagem.
Para resolver esse problema utilizaremos Traits. Basta declarar a classe Email como traits e atráves da seguinte declaração use Email
na classe CompraController, acessar diretamente o método enviarMensagem.
Para mais detalhes acesse o manual do PHP