Verklaring van Konstruktor in Interfensie in OOP in PHP
'n Konstruktor van 'n klas kan ook in 'n interfensie verklaar word.
Kom ons kyk na 'n voorbeeld. Gestel ons besluit om 'n klas
Rectangle te skep, met metodes om die oppervlakte en omtrek te vind,
sowel as 'n konstruktor wat twee parameters aanvaar.
Kom ons beskryf ons klas met behulp van 'n interfensie:
<?php
interface iRectangle
{
public function __construct($a, $b); // konstruktor met twee parameters
public function getSquare();
public function getPerimeter();
}
?>
Kom ons skryf die implementering van ons interfensie
iRectangle:
<?php
class Rectangle implements iRectangle
{
private $a;
private $b;
public function __construct($a, $b)
{
$this->a = $a;
$this->b = $b;
}
public function getSquare()
{
return $this->a * $this->b;
}
public function getPerimeter()
{
return 2 * ($this->a + $this->b);
}
}
?>
Wat het die verklaring van die konstruktor in die interfensie ons gegee? Eerstens, ons sal nie vergeet om die konstruktor in die klas te implementeer nie. Tweedens, die interfensie dui eksplisiet aan dat die konstruktor van die klas twee parameters moet aanvaar: nie meer nie, nie minder nie. Dit beskerm ons ook teen per ongeluk foute.
Hoekom het ons 'n aparte interfensie iRectangle geskep,
en nie die konstruktor by die interfensie Figure gevoeg nie?
Omdat alle figure 'n verskillende aantal sye het en dus 'n verskillende
aantal parameters in hul konstruktor. Daarom moes ons 'n aparte, meer
presiese interfensie spesiaal vir reghoeke skep.
Skep 'n interfensie iCube wat
die figuur Kubus sal beskryf. Laat jou interfensie
'n konstruktor beskryf wat die sy van die kubus as parameter aanvaar,
sowel as metodes om die volume en buiteoppervlak van die kubus te kry.
Skep 'n klas Cube wat die interfensie
iCube implementeer.
Skep 'n interfensie iUser wat
'n gebruiker sal beskryf. Daar word aanvaar dat
die gebruiker 'n naam en ouderdom sal hê en hierdie velde sal
deur die konstruktor se parameters oorgedra word. Laat
jou interfensie ook spesifiseer dat die gebruiker
getters (maar nie setters nie) vir die naam en
ouderdom sal hê.
Skep 'n klas User wat die interfensie
iUser implementeer.