Аб'яўленне канструктара ў інтэрфейсе ў ААП у 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.