Аб'яўленне канструктара ў інтэрфейсе ў ААП у 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
,
а не дадалі канструктар у інтэрфейс Figure
?
Таму што ўсе фігуры маюць розную колькасць
бакоў і, адпаведна, розную колькасць
параметраў у канструктары. Таму нам прыйшлося
стварыць асобны, больш дакладны інтэрфейс
канкрэтна для прамавугольнікаў.
Зрабіце інтэрфейс iCube
, які
будзе апісваць фігуру Куб. Хай ваш інтэрфейс
апісвае канструктар, параметрам якому прымаецца
бок куба, а таксама метады для атрымання
аб'ёму куба і плошчы паверхні.
Зрабіце клас Cube
, які рэалізуе інтэрфейс
iCube
.
Зрабіце інтэрфейс iUser
, які
будзе апісваць карыстальніка. Прыпускаецца, што
ў карыстальніка будзе імя і ўзрост і гэтыя палі будуць
перадавацца параметрамі канструктара. Хай
ваш інтэрфейс таксама задае тое, што ў карыстальніка
будуць гетэры (але не сетэры) для імя і
ўзросту.
Зрабіце клас User
, які рэалізуе інтэрфейс
iUser
.