Usando traits para evitar código repetido
Uma trait é um recurso adicionado na versão 5.4 do PHP que permite o reúso de código sem que ele esteja vinculado a nenhuma classe. Basicamente, uma trait é uma porção de código que pode ser reaproveitado em contextos diferentes. Observe o código a seguir.
<?php
/**
*
* Usando traits para evitar repetição de código.
* @author Raphael da Silva
*
*/
class MensagemOlaMundo
{
private function dizerOla($texto): string
{
return sprintf('Olá %s.', $texto);
}
public function dizerOlaMundo(): void
{
echo $this->dizerOla('Mundo');
}
}
A próxima classe tem um método igual ao da classe anterior.
<?php
/**
*
* Usando traits para evitar repetição de código.
* @author Raphael da Silva
*
*/
class MensagemOla
{
private function dizerOla($text): string
{
return sprintf('Olá %s.', $text);
}
public function dizerOlaParaAlguem($nome): void
{
echo $this->dizerOla($nome);
}
}
Como é possível perceber, o método dizerOla
se repete em ambas as classes, para evitar essa repetição pode ser criada uma trait que contém esse método repetido. Por exemplo:
<?php
/**
*
* Usando traits para evitar repetição de código.
* @author Raphael da Silva
*
*/
trait DizerOlaTrait
{
private function dizerOla($texto): string
{
return sprintf('Olá %s.', $texto);
}
}
Depois de criar a trait, é necessário utilizar a palavra reservada use
nas classes que antes continham o método que estava se repetindo. Com isso, o código da trait é importado para dentro da classe como se tivesse sido declarado dentro dela.
A seguir está a primeira classe de exemplo com a trait adicionada nela.
<?php
/**
*
* Usando traits para evitar repetição de código.
* @author Raphael da Silva
*
*/
class MensagemOlaMundo
{
use DizerOlaTrait;
public function dizerOlaMundo(): void
{
echo $this->dizerOla('Mundo');
}
}
Segue a trait adicionada na segunda classe:
<?php
/**
*
* Usando traits para evitar repetição de código.
* @author Raphael da Silva
*
*/
class MensagemOla
{
use DizerOlaTrait;
public function dizerOlaParaAlguem($nome): void
{
echo $this->dizerOla($nome);
}
}
Traits são um bom recurso para evitar a repetição de código, o exemplo mostrado anteriormente serve para ilustrar isso. Com esse recurso o PHP traz muito mais possibilidades para lidar com código repetido (leia-se resolvê-lo). Ter as traits como carta na manga ajuda muito.
ver todos os posts