PHP-dä OOP-dä interfeýsde konstruktoryň yglan edilişi
Interfeýsde hem klas konstruktoryny yglan etmek bolýar.
Mysal üçin seredeliň. Geliň, meýdany, perimetri tapmak
üçin usullary bolan we iki parametr alýan konstruktory
bolan Rectangle klasyny ýasamaga çözgüt etdik diýeliň.
Indi interfeýs ýardamynda öz klasymyzy beýan edeliň:
<?php
interface iRectangle
{
public function __construct($a, $b); // iki parametrli konstruktor
public function getSquare();
public function getPerimeter();
}
?>
Indi, iRectangle interfeýsimizi amala aşyryşyny ýazalyň:
<?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);
}
}
?>
Interfeýsde konstruktory yglan etmek bize näme berdi? Birinjiden, biz klasda konstruktory amala aşyrmakdan ýatman. Ikinjiden, interfeýs aýdan-anyk görkezýär, ýagny klas konstruktory iki parametr almaly: az hem däl, köp hem däl. Bu hem bizi töwekgelçilik ýalňyşlygymyzdan gorar.
Näme üçin biz iRectangle ýörite interfeýsini döretdik,
ýöne konstruktory Figure interfeýsine goşup bilmedik?
Sebäbi ähli şekilleriň dürli tarap sany bar we şoňa laýyklykda
olaryň konstruktorlarynda parametrleriň sany hem tapawutlanýar.
Şonuň üçin, edil kvadratlar üçin ýörite, has takyk interfeýs
döretmeli boldy.
iCube interfeýsini düzüň, ol Kub şeklini beýan etmeli.
Interfeýsiňiz kubyň tarapyny parametr hökmünde alýan konstruktory,
şeýle hem kubyň göwrümini we ýüzüniň meýdanyny almak üçin usullary
beýan etsin.
iCube interfeýsini amala aşyrýan Cube klasyny düzüň.
Ulanyjyny beýan edýän iUser interfeýsini düzüň.
Garaşylýar, ulanyjynyň ady we ýaşy bolup, bu meýdanlar
konstruktoryň parametrleri hökmünde geçiriler. Interfeýsiňiz
şeýle-de, ulanyjynyň ady we ýaşy üçin getterler (ýöne setterler däl)
bolmalydygyny hem kesgitlemeli.
iUser interfeýsini amala aşyrýan User klasyny düzüň.