Tal função foi adicionado no PHP 5.4 para permitir uma maior reutilização de código sem a complexidade adicional que vem permitindo-herança múltipla. Traits são definidas com a palavra-chave traits seguido de um nome e um bloco de código. A convenção de nomenclatura é o mesmo que para as classes, com cada palavra a primeira letra maiúscula. O bloco de código deve conter apenas métodos estáticos e de instância.

trait PrintFunctionality
{
      public function myPrint()
      {
            echo 'Hello'; 
      }
}

Classes que precisam da funcionalidade que oferece um traits pode incluí-lo com a palavra-chave use seguido pelo nome do traço. Os métodos do traço, então, se comportam como se tivessem sido diretamente definidas nessa classe.

class MyClass
{
    // Inserir o método trait
    use PrintFunctionality;
}

$o = new MyClass();
$o->myPrint(); // "Hello"

Uma classe pode usar vários tarits, colocando-os em uma lista separada por vírgula. Da mesma forma, uma característica pode ser constituído a partir de uma ou mais outras características.

Herança e traços

Métodos Trait irá substituir métodos herdados. Da mesma forma, os métodos definidos na classe irá substituir métodos inseridos por um traço.

class MyParent
{
    public function myPrint(){
        echo 'Base'; 
    }
}

class MyChild extends MyParent
{
    // Overrides inherited method
    use PrintFunctionality;
   
    // Overrides trait inserted method
    public function myPrint(){
        echo 'Child'; 
    }
}

$o = new MyChild();
$o->myPrint(); // "Child"

Diretrizes do Trait

Herança simples, por vezes, obriga o desenvolvedor a fazer uma escolha entre a reutilização de código e uma hierarquia de classes conceitualmente limpa. Para alcançar uma maior reutilização de código, os métodos podem ser movidos perto da raiz da hierarquia de classes. Por outro lado, reforça a limpeza conceitual na hierarquia de classes, muitas vezes, levar à duplicação de código, o que pode causar inconsistências. Traits pode fornecer uma maneira de evitar esta lacuna na herança simples, permitindo a reutilização de código, que é independente da hierarquia de classes.

Links úteis Sobre Traits

Documentação Oficial -> http://php.net/manual/pt_BR/language.oop5.traits.php

Thiago Belem: PHP 5.4 – Traits -> http://blog.thiagobelem.net/php-5-4-traits/

Revista InfoQ: PHP 5.4: Sai o Register Globals, entra o suporte a Traits -> http://www.infoq.com/br/news/2012/03/PHP-5.4

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.