Practică pe aplicarea interfețelor în OOP în PHP

Să încercăm aplicarea interfețelor în practică. Să rezolvăm problema cu figurile geometrice din lecția precedentă, dar folosind acum interfețe, nu clase abstracte.

Deci, acum avem interfața Figure:

Figure.php<?php
  interface Figure
  {
    public function getSquare();
    public function getPerimeter();
  }
?>

Să creăm clasa Quadrate care va implementa metodele acestei interfețe:

Quadrate.php<?php
  class Quadrate implements Figure
  {
    private $a;
    
    public function __construct($a)
    {
      $this->a = $a;
    }
    
    public function getSquare()
    {
      return $this->a * $this->a;
    }
    
    public function getPerimeter()
    {
      return 4 * $this->a;
    }
  }
?>

Cum funcționează: dacă uităm să implementăm vreo metodă descrisă în interfață, PHP ne va afișa o eroare fatală. Să implementăm și clasa Rectangle:

Rectangle.php<?php
  class Rectangle implements Figure
  {
    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);
    }
  }
?>
Задание 1

Creați clasa Disk, care implementează interfața Figure.