Eienskappe in OOP in PHP
Soos jy reeds weet, kan jy in PHP nie van verskeie klasse gelyktydig erf nie, slegs van een. Ons het vroeër reeds die oplossing vir hierdie probleem behandel: in plaas van oorerwing, gebruik voorwerpe van een klasse binne ander.
In PHP is daar 'n ander manier. Dit behels die gebruik van eienskappe. 'n Eienskap verteenwoordig 'n stel eienskappe en metodes wat by 'n ander klas ingesluit kan word. Die eienskappe en metodes van die eienskap sal deur die klas beskou word asof dit sy eie is.
Die sintaksis van 'n eienskap is dieselfde as dié van 'n klas,
behalwe dat die naam van die eienskap
gedeclareer moet word met die sleutelwoord
trait.
Jy kan nie 'n instansie van 'n eienskap skep nie - eienskappe
is slegs bedoel om by ander
klasse gekoppel te word. Die koppeling self word uitgevoer
met die opdrag use, waarna
met 'n spasie die naam van die eienskap wat gekoppel word, aangedui word.
Hierdie opdrag word aan die begin van die klas geskryf.
Kom ons kyk na die toepassing van eienskappe in 'n praktiese
voorbeeld. Gestel ons het die volgende eienskap
Helper, wat die private eienskappe
name en age bevat, sowel as hul getters:
<?php
trait Helper
{
private $name;
private $age;
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Gestel ons het ook die volgende klas User,
in wie se konstruktor die eienskappe
name en age gestel word:
<?php
class User
{
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
?>
Kom ons voeg nou getters vir die eienskappe
van ons klas User by. Maar laat ons dit nie
in die klas self skryf nie, en bloot die
eienskap Helper koppel, waarin hierdie metodes
reeds geïmplementeer is:
<?php
class User
{
use Helper; // koppel die eienskap
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
?>
Na die koppeling van die eienskap sal die metodes en eienskappe van daardie eienskap in ons klas verskyn. Ons sal na hulle verwys asof dit die metodes en eienskappe van die klas self is:
<?php
$user = new User('john', 30);
echo $user->getName(); // sal 'john' uitvoer
echo $user->getAge(); // sal 30 uitvoer
?>
Implementeer die klas City met die eienskappe
name, age, population
en getters daarvoor. Laat ons klas vir
die verkorting van sy kode die reeds geskepde
eienskap Helper gebruik.