PHP OOP-da klas miras we interfeýsi amala aşyrmak
Klas başga bir klasdan miras alyp biler we şol bir wagtyň özünde bir interfeýsi amala aşyryp biler. Amaly mysalda gözden geçireýliň.
Goý, bizde Programmer atly klas bolsun,
onyň ady, maaşy we programmist bilýän dilleriň
sanawy bolsun.
Häzirki wagtda klasymyzyň düşündirişi örän düýbsüz:
hawa, klasda ady, maaşy, dilleri bolup biler -
ýöne klasymyzda haýsy metodlar bolup biler?
Geliň klasymyzy iProgrammer interfeýsi
ýardymynda has anyk beýan edeliň:
<?php
interface iProgrammer
{
public function __construct($name, $salary);
public function getName();
public function getSalary();
public function getLangs();
public function addLang($lang);
}
?>
Goý, biz eýýäm amala aşyrylan klaslarymyzda
göz aýlap görüp, bizde eýýäm şuňa meňzeş
Employee atly klas bar ekeni çykyar.
Ol Programmer klasynyň ähli metodlaryny
amala aşyrmok, ýöne bölegini.
Bizde bar bolan klasyň kody şeýle:
<?php
class Employee
{
private $name;
private $salary;
public function __construct($name, $salary)
{
$this->name = $name;
$this->salary = $salary;
}
public function getName()
{
return $this->name;
}
public function getSalary()
{
return $this->salary;
}
}
?>
Bizim ýagdaýymyzda makyldyr, eger
täze klasymyz Programmer özüne gerek bolan
metodlaryň bölegini Employee klasyndan miras alsa
(bölegini bolsa soňra täze klasyň özünde amala aşyrarys):
<?php
class Programmer extends Employee
{
}
?>
Şol bir wagtynda biz bilýäris, Programmer
klasy iProgrammer interfeýsini
amala aşyrmaly:
<?php
class Programmer implements iProgrammer
{
}
?>
Geliň Employee klasyndan miras almaklygy we
iProgrammer interfeýsini amala aşyrmaklygy
birleşdireliň:
<?php
class Programmer extends Employee implements iProgrammer
{
}
?>
Netijede bizim Programmer klasymyz
Employee klasyndan __construct, getName we getSalary
metodlaryny miras alyp, addLang we getLangs
metodlaryny bolsa özümiz amala aşyrmaly bolarys:
<?php
class Programmer extends Employee implements iProgrammer
{
public function addLang($lang)
{
// amala aşyrylmagy
}
public function getLangs()
{
// amala aşyrylmagy
}
}
?>
iProgrammer interfeýsi üçin,
metodlaryň klasa degişlimi ýa-da miras alnanmy
diňe bir wajyp - beýan edilen ähli metodlar
amala aşyrylmak.
Meniň Employee klasymyň kodyny we
iProgrammer interfeýsimiň kodyny göçüriň. Meniň
Programmer klasym üçin taýýarlagymy göçürmäň -
meniň koduma seretmän bu klasy
öz başyňyza amala aşyryň.