Deklarimi i konstruktorit në ndërfaqe në OOP në PHP

Në ndërfaqe gjithashtu mund të deklarohet konstruktor i klasës. Le të shohim me një shembull. Le të supozojmë se kemi vendosur të bëjmë një klasë Rectangle, në të cilën do të ketë metoda për gjetjen e sipërfaqes, perimetrit, si dhe një konstruktor, i cili pranon dy parametra. Le të përshkruajmë klasën tonë duke përdorur ndërfaqen:

iRectangle.php<?php
  interface iRectangle
  {
    public function __construct($a, $b); // konstruktor me dy parametra
    public function getSquare();
    public function getPerimeter();
  }
?>

Le të shkruajmë implementimin e ndërfaqes sonë 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);
    }
  }
?>

Çfarë na dha deklarimi i konstruktorit në ndërfaqe? Së pari, ne nuk do të harrojmë të implementojmë konstruktorin në klasë. Së dyti, ndërfaqja tregon në mënyrë eksplicite, që konstruktori i klasës duhet të pranojë dy parametra: as më shumë, as më pak. Kjo gjithashtu na mbron nga gabimet e rastësishme.

Pse krijuam një ndërfaqe të veçantë iRectangle, në vend që të shtonim konstruktorin në ndërfaqen Figure? Sepse të gjitha figurat kanë numër të ndryshëm brinjësh dhe, në përputhje me rrethanat, numër të ndryshëm parametrash në konstruktor. Prandaj, ne u desh të krijonim një ndërfaqe të veçantë, më të saktë posaçërisht për drejtkëndëshat.

Задание 1

Bëni një ndërfaqe iCube, e cila do të përshkruajë figurën Kub. Le të ndërfaqja juaj të përshkruajë konstruktorin, i cili si parametër pranon brinjën e kubit, si dhe metodat për marrjen e vëllimit të kubit dhe sipërfaqes anësore.

Задание 2

Bëni një klasë Cube, e cila implementon ndërfaqen iCube.

Задание 3

Bëni një ndërfaqe iUser, e cila do të përshkruajë përdoruesin. Supozohet se përdoruesi ka emër dhe moshë dhe këto fusha do të kalojnë si parametra të konstruktorit. Le të ndërfaqja juaj gjithashtu përcaktojë që përdoruesi të ketë metoda get (por jo set) për emrin dhe moshën.

Задание 4

Bëni një klasë User, e cila implementon ndërfaqen iUser.