Um guia simples para usar trait em Laravel 5

Recentemente estive estudando como funciona a autenticação do Laravel 5.4 e sempre via "use RegistersUsers" que se relacionava a uma trait e não a uma classe e me perguntava, o que trait?

Visão Geral

Se você tem exposição à programação orientada a objetos, então você terá sido introduzido no conceito de classes e interfaces abstratas. Um "Trait" é semelhante a uma classe abstrata, na medida em que não pode ser instanciado por conta própria, mas contém métodos que podem ser usados ​​em uma classe concreta. Os traços foram introduzidos no PHP na versão 5.4 e são usados ​​extensivamente no Laravel Framework. Eles são ideais para reduzir o efeito limitante da herança única, permitindo a exposição de métodos como se estivessem definidos na classe de chamada. A definição exata do site PHP define traços como tal:

"Os traços são um mecanismo para reutilização de código em linguagens de herança única, como o PHP. Um traço destina-se a reduzir algumas limitações da herança única, permitindo que um desenvolvedor reutilize conjuntos de métodos livremente em várias classes independentes que vivem em hierarquias de classes diferentes. A semântica da combinação de Traços e aulas é definida de uma forma que reduz a complexidade e evita os problemas típicos associados à herança múltipla.

Um traço é semelhante a uma classe, mas apenas destinado a agrupar a funcionalidade de uma forma fina e consistente. Não é possível instanciar um traço por conta própria. É uma adição à herança tradicional e permite a composição horizontal do comportamento; isto é, a aplicação dos membros da turma sem necessidade de herança ".

Exemplo de um trait

Criar um traço é como definir uma classe, o seguinte exemplo simples (excluindo comentários) mostra um único arquivo com uma característica que possui 2 métodos:
namespace App\Traits;

trait ExemploTeste
{
    public function printThis()
    {
        echo "executando uma Trait de Chocolate";
        dd($this);
    }

    public function anotherMethod()
    {
        echo "Trait De outro método da felicidade o/";
    }
}

Nosso exemplo se parece com uma definição de classe, exceto que usamos a palavra-chave "trace", não há construtor, pois não pode ser instanciado (como uma classe abstrata). Ele usa um espaço de nome de App\Traits para dar-lhe um agrupamento claro (você pode usar o que quiser aqui). Se você precisa acessar o código em outros espaços de nome, basta incluir a declaração "use" (veja o exemplo abaixo) e criar e chamar o (s) método (s) conforme necessário.

Dentro do arquivo, os nomes das funções devem ser únicos e se eles entrarem em conflito com métodos existentes, a seguinte precedência entrará em vigor:

  • Um membro herdado de uma classe base é substituído por um membro inserido por um trace.
  • Os membros da classe atual substituem os métodos Trait.

Armazenando Traços

Por conveniência criei um diretório em "app" chamado "Traits", e coloquei meus arquivos PHP personalizados lá. Cada arquivo usa o nome do Trait para correlação lógica. Ao usar um espaço de nome de "App\Traits" em cada arquivo, o Framework foi capaz de localizar meus arquivos quando eu usá-los (use) em outro arquivo.

Exemplo de código usando o trait:

/**
 * \class AdminLoginJob
 * @date 2017-06-27
 */
namespace App\Jobs;

use App\Jobs\Job;
use Illuminate\Contracts\Bus\SelfHandling;

use App\Traits\ExampleCode;

/**
 *  Breve Exemplo de código usando um trace em um processor do Laravel
 */
class AdminLoginJob extends Job implements SelfHandling
{
    use ExampleCode;
    
    /**
     * Trate de chamada para imprimir algo. Observe o uso de "$this".
     * 
     * @return void
     */
    public function __construct()
    {
        $this->printThis();
    }

Conclusão

Eu após começar a trabalhar com o com POO e Laravel, estava sentido falta de formas de centralizar todas as funções comuns que tenho e costumo usar, (funções de tratamento de datas, strings e etc.) e entender o uso do trait sanou totalmente essa necessidade. Utilizar o trait facilita muito a reutilização de código.

Referencias

https://www.conetix.com.au/blog/simple-guide-using-traits-laravel-5
http://php.net/manual/pt_BR/language.oop5.traits.php



Se vocês gostaram desse Post não deixe de compartilhar com seus amigos!!!
E para não perder nenhuma novidade nos sigam nas redes sociais:
Twitter: @Bulfaitelo
Facebook: Bulfaitelo Project
Blogger: Bulfaitelo Project
Share on Google Plus

About Thiago Rodrigues

Formado em Sistema de Informação pela Faculdade Paraíso
O que falar de mim? Não á muito, mas garanto que meu objetivo aqui é somente ajudar!
Atualmente desenvolvendo o projeto do QiEstudo.

Comentários
0 Comentários

0 comentários:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.