Эъломи конструктор дар интерфейс дар ООП дар 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-ро татбиқ кунад.