Параметрҳо дар усулҳои интерфейсҳо дар ООП дар PHP
Ҳангоми тавсифи усулҳо дар интерфейсҳо зарур аст, ки на танҳо номи худӣ усулҳо, балки параметрҳои қабулкардаи онҳо низ нишон дода шаванд.
Биёед ба мисол нигарем. Фарз кунем, ки мо
интерфейси iMath-ро дорем, ки синфи
барои амалиётҳои математикии ҷамъкунӣ, тарҳкунӣ,
зарбкунӣ ва тақсимкуниро тавсиф мекунад. Бигзор ин интерфейс
ин тавр намуд дошта бошад:
<?php
interface iMath
{
public function sum();
public function subtract();
public function multiply();
public function divide();
}
?>
Ҳоло усулҳои интерфейси мо ягон параметр қабул намекунанд. Ва дар асл усулҳои синфе, ки ин интерфейсро амалӣ мекунад, низ бояд параметр қабул накунанд, вагарна хато рух медиҳад.
Биёед параметрҳои усулҳоро дар интерфейси худ нишон диҳем:
<?php
interface iMath
{
public function sum($a, $b);
public function subtract($a, $b);
public function multiply($a, $b);
public function divide($a, $b);
}
?>
Ҳоло амалисозии интерфейси худро нависем:
<?php
class Math implements iMath
{
public function sum($a, $b)
{
return $a + $b;
}
public function subtract($a, $b)
{
return $a - $b;
}
public function multiply($a, $b)
{
return $a * $b;
}
public function divide($a, $b)
{
return $a / $b;
}
}
?>
Агар кӯшиш кунем, ки дар синфи худ шумораи дигар параметрҳо муайян кунем - ин ба мо танҳо намеафтад: PHP хато медиҳад. Ҳамин тавр мо на метавонем ҳам тасодуфан ягон параметрро фаромӯш кунем, ҳам тасодуфан иловагӣ изофа кунем.
Фарз кунем, ки мо интерфейси зерини iUser-ро дорем:
<?php
interface iUser
{
public function setName($name);
public function getName();
public function setAge($age);
public function getAge();
}
?>
Синфи User-ро созед, ки
ин интерфейси додашударо амалӣ кунад.