PHP OOP - Vlastnosti
PHP – co jsou vlastnosti?
PHP podporuje pouze jedinou dědičnost: podřízená třída může dědit pouze od jednoho jediného rodiče.
Co když tedy třída potřebuje zdědit více druhů chování? Tento problém řeší vlastnosti OOP.
Vlastnosti se používají k deklaraci metod, které lze použít ve více třídách. Vlastnosti mohou mít metody a abstraktní metody, které lze použít ve více třídách, a metody mohou mít jakýkoli modifikátor přístupu (veřejný, soukromý nebo chráněný).
Vlastnosti jsou deklarovány pomocí trait
klíčového slova:
Syntax
<?php
trait TraitName {
// some code...
}
?>
Chcete-li použít vlastnost ve třídě, použijte
use
klíčové slovo:
Syntax
<?php
class MyClass {
use TraitName;
}
?>
Podívejme se na příklad:
Příklad
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use
message1;
}
$obj = new Welcome();
$obj->msg1();
?>
Příklad vysvětlen
Zde deklarujeme jednu vlastnost: message1. Poté vytvoříme třídu: Vítejte. Třída používá vlastnost a všechny metody ve vlastnosti budou dostupné ve třídě.
Pokud ostatní třídy potřebují používat funkci msg1(), jednoduše použijte v těchto třídách vlastnost message1. To snižuje duplicitu kódu, protože není potřeba znovu a znovu deklarovat stejnou metodu.
PHP - Použití více vlastností
Podívejme se na další příklad:
Příklad
<?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();
?>
Příklad vysvětlen
Zde deklarujeme dvě vlastnosti: zpráva1 a zpráva2. Poté vytvoříme dvě třídy: Welcome a Welcome2. První třída (Welcome) používá vlastnost message1 a druhá třída (Welcome2) používá vlastnosti message1 i message2 (více vlastností je odděleno čárkou).