PHP да ООП да интерфейс методларининг параметрлари
Интерфейсларда методларни тасвирлашда фақат методларнинг номларигина эмас, балки улар қабул қиладиган параметрларни ҳам кўрсатиш зарур.
Келинг, мисолда кўрамиз. Бизда iMath
интерфейси мавжуд бўлиб, у қўшиш, айириш,
кўпайтириш ва бўлиш математик амаллари учун
классни тасвирласин. Бу интерфейс quyidagicha
кўринишда бўлсин:
<?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 хатолик берadi. Шу тариқа, биз бирон параметрни асоссиз унутиб қўйишимиз ҳам, бирон ортиқча параметр қўшиб юборишимиз ҳам мумкин эмас.
Бизда quyidagi iUser интерфейси мавжуд бўлсин:
<?php
interface iUser
{
public function setName($name);
public function getName();
public function setAge($age);
public function getAge();
}
?>
User классини яратинг, ушбу
интерфейсни амалга оширсин.