PHP-dä OOP-da birnäçe interfeýs
PHP-de köplenç miras ýok - her bir
klasynyň diňe bir ata-enesi bolup biler.
Interfeýslar bilen iş, şondan-da, başgaca:
her bir klas islendik mukdarda interfeýsi
amala aşyryp biler. Munuň üçin interfeýsleriň adlary
implements açary sözünden soň orta çyzyg bilen sanalanmaly.
Bu ýerde interfeýslaryň abstrakt klasslardan başga bir tapawudy hem görkezilýär - köp interfeýsi amala aşyryp bolýar, ýöne birnäçe abstrakt klasa miras alyp bolmaýar.
Geliň amaly taýdan synaşaly. iFigure
interfeýsinden başga, bizde iTetragon
interfeýsi hem bolsun diýeli.
Bu interfeýsiň usullary
Quadrate we Rectangle klasslary tarapyndan amala aşyrylar,
sebäbi olaryň 4 tarapy bar, ýöne Disk
klasy tarapyndan amala aşyrylmaz.
iTetragon interfeýsi
dörtburçlugyň dört tarapynyň hem
getter usullaryny kesgitleýär diýeli:
<?php
interface iTetragon
{
public function getA();
public function getB();
public function getC();
public function getD();
}
?>
Öň hem döreden iFigure
interfeýsimiz hem bolsun:
<?php
interface iFigure
{
public function getSquare();
public function getPerimeter();
}
?>
Quadrate klasynyň
iki interfeýsi amala aşyrmagyny edeliň. Munuň üçin
iki interfeýsi hem orta çyzyg bilen
implements açary sözünden soň sanalaýarys:
<?php
class Quadrate implements iFigure, iTetragon
{
// bu ýerde amala aşyrylyşy bolar
}
?>
Indi Quadrate klasymyzy
iTetragon interfeýsini amala aşyrýan edip işleýäris.
Kwadratymyzyň dörtburçlugyň aýratyn bir
hali bolýandygyny düşünmek kyn däl, sebäbi kwadratda
hemme taraplar deňdir. Şonuň üçin hemme täze usullary
şol bir zady - kwadratyň inişini gaýtarar:
<?php
class Quadrate implements iFigure, iTetragon
{
private $a;
public function __construct($a)
{
$this->a = $a;
}
public function getA()
{
return $this->a;
}
public function getB()
{
return $this->a;
}
public function getC()
{
return $this->a;
}
public function getD()
{
return $this->a;
}
public function getSquare()
{
return $this->a * $this->a;
}
public function getPerimeter()
{
return 4 * $this->a;
}
}
?>
Çyzygda, emma, hemme
taraplar birmeňzeş däl, diňe garşylykly taraplar.
Bu ýagdaýda täze usullary birneme
parhly bolar. Gowy, islendik trapetsiýada
umuman hemme 4 taraplar parhly bolar.
Emma, haýsy şekili göz öňüne getirýändigimiziň ähmiýeti ýok - ähmiýetli, bu şekilleriň hemmesiniň kesgitlenen usullary bolmagy (bolsa käbir şekiller aýratyn hem) we birmeňzeş işlemegi.
Rectangle klasynyň
hem iki interfeýsi amala aşyrmagyny ediň: hem iFigure,
hem iTetragon.
getRadius we getDiameter usullary bilen
iCircle interfeýsini düzüň.
Disk klasynyň hem
iki interfeýsi amala aşyrmagyny ediň: hem iFigure,
hem iCircle.