PHP OOP - Eigenschaften
PHP - Was sind Traits?
PHP unterstützt nur die einfache Vererbung: Eine Kindklasse kann nur von einem einzigen Elternteil erben.
Was also, wenn eine Klasse mehrere Verhaltensweisen erben muss? OOP-Merkmale lösen dieses Problem.
Eigenschaften werden verwendet, um Methoden zu deklarieren, die in mehreren Klassen verwendet werden können. Merkmale können Methoden und abstrakte Methoden haben, die in mehreren Klassen verwendet werden können, und die Methoden können einen beliebigen Zugriffsmodifikator (öffentlich, privat oder geschützt) haben.
Merkmale werden mit dem trait
Schlüsselwort deklariert:
Syntax
<?php
trait TraitName {
// some code...
}
?>
Um ein Merkmal in einer Klasse zu verwenden, verwenden Sie das
use
Schlüsselwort:
Syntax
<?php
class MyClass {
use TraitName;
}
?>
Schauen wir uns ein Beispiel an:
Beispiel
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use
message1;
}
$obj = new Welcome();
$obj->msg1();
?>
Beispiel erklärt
Hier deklarieren wir ein Merkmal: message1. Dann erstellen wir eine Klasse: Welcome. Die Klasse verwendet die Eigenschaft, und alle Methoden in der Eigenschaft sind in der Klasse verfügbar.
Wenn andere Klassen die Funktion msg1() verwenden müssen, verwenden Sie einfach die Eigenschaft message1 in diesen Klassen. Dadurch wird die Codeduplizierung reduziert, da dieselbe Methode nicht immer wieder neu deklariert werden muss.
PHP - Verwendung mehrerer Eigenschaften
Schauen wir uns ein anderes Beispiel an:
Beispiel
<?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();
?>
Beispiel erklärt
Hier deklarieren wir zwei Traits: message1 und message2. Dann erstellen wir zwei Klassen: Welcome und Welcome2. Die erste Klasse (Welcome) verwendet das Merkmal message1 und die zweite Klasse (Welcome2) verwendet sowohl das message1- als auch das message2-Merkmal (mehrere Merkmale werden durch Kommas getrennt).