Эъломи конструктор дар интерфейс дар ООП дар PHP

Дар интерфейс низ метавон конструктори синфро эълом кард. Ба мисол менигарем. Фарз кунем, ки мо қарор додем созем синфи Rectangle, ки дар он усулҳо барои ёфтани масоҳат, периметр, ва инчунин конструктор, ки ду параметр қабул мекунад, бошад. Биёед синфи худро бо ёрии интерфейс тавсиф кунем:

iRectangle.php<?php
  interface iRectangle
  {
    public function __construct($a, $b); // конструктор бо ду параметр
    public function getSquare();
    public function getPerimeter();
  }
?>

Биёед татбиқи интерфейси худро iRectangle нависем:

Rectangle.php<?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 конструктор илова накардем? Зеро ки ҳамаи ашкол шумораи гуногуни тарафҳо доранд ва, мутаносибан, шумораи гуногуни параметрҳо дар конструктор. Аз ин рӯ, мо маҷбур шудеем интерфейси ҷудогона, дақиқтар сохтем хусусан барои росткунҷаҳо.

Задание 1

Интерфейси iCube созед, ки шакли Кубро тавсиф диҳад. Бигзор интерфейси шумо конструкторро тавсиф кунад, ки параметраш тарафи кубро қабул кунад, ва инчунин усулҳоро барои гирифтани ҳаҷми куб ва масоҳати сатҳи он.

Задание 2

Синфи Cube созед, ки интерфейси iCube-ро татбиқ кунад.

Задание 3

Интерфейси iUser созед, ки корбареро тавсиф диҳад. Фарз бар ин аст, ки корбар ном ва син дорад ва ин майдонҳо хоҳанд буд параметрҳои конструктор тавассути интиқол дода шаванд. Бигзор интерфейси шумо инчунин таъин кунад, ки корбар геттерҳо (аммо сеттерҳо нест) барои ном ва син дошта бошад.

Задание 4

Синфи User созед, ки интерфейси iUser-ро татбиқ кунад.