PHP OOP - Cechy
PHP — co to są cechy?
PHP obsługuje tylko dziedziczenie pojedyncze: klasa potomna może dziedziczyć tylko od jednego rodzica.
A co, jeśli klasa musi dziedziczyć wiele zachowań? Cechy OOP rozwiązują ten problem.
Cechy są używane do deklarowania metod, które mogą być używane w wielu klasach. Cechy mogą zawierać metody i metody abstrakcyjne, których można używać w wielu klasach, a metody mogą mieć dowolny modyfikator dostępu (publiczny, prywatny lub chroniony).
Cechy deklarowane są za pomocą trait
słowa kluczowego:
Składnia
<?php
trait TraitName {
// some code...
}
?>
Aby użyć cechy w klasie, użyj
use
słowa kluczowego:
Składnia
<?php
class MyClass {
use TraitName;
}
?>
Spójrzmy na przykład:
Przykład
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use
message1;
}
$obj = new Welcome();
$obj->msg1();
?>
Przykład wyjaśniony
Tutaj deklarujemy jedną cechę: wiadomość1. Następnie tworzymy klasę: Welcome. Klasa korzysta z cechy, a wszystkie metody w cesze będą dostępne w klasie.
Jeśli inne klasy muszą używać funkcji msg1(), po prostu użyj cechy message1 w tych klasach. Zmniejsza to powielanie kodu, ponieważ nie ma potrzeby ponownego deklarowania tej samej metody w kółko.
PHP — korzystanie z wielu cech
Spójrzmy na inny przykład:
Przykład
<?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();
?>
Przykład wyjaśniony
Tutaj deklarujemy dwie cechy: wiadomość1 i wiadomość2. Następnie tworzymy dwie klasy: Welcome i Welcome2. Pierwsza klasa (Welcome) wykorzystuje cechę wiadomość1, a druga klasa (Welcome2) zarówno cechę wiadomość1, jak i wiadomość2 (wiele cech jest oddzielonych przecinkami).