PHP OOP - Características
PHP - O que são traços?
PHP suporta apenas herança simples: uma classe filha pode herdar apenas de um único pai.
Então, e se uma classe precisar herdar vários comportamentos? As características OOP resolvem esse problema.
Traits são usados para declarar métodos que podem ser usados em várias classes. As características podem ter métodos e métodos abstratos que podem ser usados em várias classes, e os métodos podem ter qualquer modificador de acesso (público, privado ou protegido).
As características são declaradas com a trait
palavra-chave:
Sintaxe
<?php
trait TraitName {
// some code...
}
?>
Para usar uma característica em uma classe, use a
use
palavra-chave:
Sintaxe
<?php
class MyClass {
use TraitName;
}
?>
Vejamos um exemplo:
Exemplo
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use
message1;
}
$obj = new Welcome();
$obj->msg1();
?>
Exemplo explicado
Aqui, declaramos uma característica: message1. Em seguida, criamos uma classe: Welcome. A classe usa a característica e todos os métodos na característica estarão disponíveis na classe.
Se outras classes precisarem usar a função msg1(), simplesmente use a característica message1 nessas classes. Isso reduz a duplicação de código, pois não há necessidade de redeclarar o mesmo método repetidamente.
PHP - Usando vários traços
Vejamos outro exemplo:
Exemplo
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
trait message2 {
public function msg2()
{
echo "OOP reduces code duplication!";
}
}
class Welcome {
use message1;
}
class Welcome2 {
use message1, message2;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";
$obj2 =
new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>
Exemplo explicado
Aqui, declaramos duas características: message1 e message2. Em seguida, criamos duas classes: Welcome e Welcome2. A primeira classe (Welcome) usa a característica message1 e a segunda classe (Welcome2) usa as características message1 e message2 (várias características são separadas por vírgula).