Декларација на конструктор во интерфејс во ООП во PHP
Во интерфејсот исто така може да се декларира конструктор
на класата. Ајде да погледнеме на пример. Да речеме дека решивме
да направиме класа Rectangle, во која
ќе има методи за наоѓање на плоштина, периметар,
како и конструктор, кој прифаќа два параметри.
Ајде да ја опишеме нашата класа со помош на интерфејс:
<?php
interface iRectangle
{
public function __construct($a, $b); // конструктор со два параметри
public function getSquare();
public function getPerimeter();
}
?>
Ајде да напишеме имплементација на нашиот интерфејс
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);
}
}
?>
Што ни даде декларацијата на конструкторот во интерфејсот? Прво, нема да заборавиме да го имплементираме конструкторот во класата. Второ, интерфејсот експлицитно укажува, дека конструкторот на класата мора да прифати два параметри: ни повеќе, ни помалку. Ова исто така ќе не заштити од случајна грешка.
Зошто создадовме одделен интерфејс iRectangle,
a не додадовме конструктор во интерфејсот Figure?
Затоа што сите фигури имаат различен број на
страни и, соодветно, различен број на
параметри во конструкторот. Затоа моравме
да создадеме одделен, попрецизен интерфејс
конкретно за правоаголници.
Направете интерфејс iCube, кој
ќе ја опишува фигурата Коцка. Нека вашиот интерфејс
го опише конструкторот, кој како параметар прифаќа
страна на коцката, како и методи за добивање
на волумен на коцката и плоштина на површината.
Направете класа Cube, која го имплементира интерфејсот
iCube.
Направете интерфејс iUser, кој
ќе го опишува корисникот. Се претпоставува дека
корисникот ќе има име и возраст и овие полиња ќе
бидат пренесени како параметри на конструкторот. Нека
вашиот интерфејс исто така наложува дека корисникот
ќе има геттери (но не и сетири) за името и
возраста.
Направете класа User, која го имплементира интерфејсот
iUser.