Կոնստրուկտորի հայտարարումը ինտերֆեյսում OOP-ում PHP-ում
Ինտերֆեյսում կարելի է նաև հայտարարել դասի կոնստրուկտոր։
Դիտարկենք օրինակով։ Ենթադրենք՝ որոշեցինք ստեղծել Rectangle դասը,
որտեղ կլինեն մեթոդներ մակերեսը և պարագիծը գտնելու համար,
ինչպես նաև կոնստրուկտոր, որն ընդունում է երկու պարամետր։
Եկեք նկարագրենք մեր դասը՝ օգտագործելով ինտերֆեյս.
<?php
interface iRectangle
{
public function __construct($a, $b); // կոնստրուկտոր երկու պարամետրով
public function getSquare();
public function getPerimeter();
}
?>
Եկեք գրենք մեր iRectangle ինտերֆեյսի իրականացումը.
<?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);
}
}
?>
Ի՞նչ տվեց մեզ կոնստրուկտորի հայտարարումը ինտերֆեյսում։ Նախ, մենք չենք մոռանա իրականացնել կոնստրուկտորը դասում։ Երկրորդ, ինտերֆեյսը հստակեցնում է, որ դասի կոնստրուկտորը պետք է ընդունի երկու պարամետր՝ ոչ ավել, ոչ պակաս։ Սա նաև կպաշտպանի մեզ պատահական սխալից։
Ինչու՞ մենք ստեղծեցինք առանձին iRectangle ինտերֆեյս,
և չավելացրինք կոնստրուկտորը Figure ինտերֆեյսում։
Քանի որ բոլոր պատկերներն ունեն տարբեր քանակությամբ
կողմեր և, համապատասխանաբար, տարբեր քանակությամբ
պարամետրեր կոնստրուկտորում։ Ուստի մենք ստիպված էինք
ստեղծել առանձին, ավելի ճշգրիտ ինտերֆեյս
հատկապես ուղղանկյունների համար։
Ստեղծեք iCube ինտերֆեյս, որը
կնկարագրի Քուբ պատկերը։ Թող ձեր ինտերֆեյսը
նկարագրի կոնստրուկտոր, որն ընդունում է
խորանարդի կողմը որպես պարամետր, ինչպես նաև մեթոդներ
խորանարդի ծավալը և մակերևույթի մակերեսը ստանալու համար։
Ստեղծեք Cube դաս, որն իրականացնում է
iCube ինտերֆեյսը։
Ստեղծեք iUser ինտերֆեյս, որը
կնկարագրի օգտագործողին (user)։ Ենթադրվում է, որ
օգտագործողը կունենա անուն և տարիք, և այդ դաշտերը կլինեն
կոնստրուկտորին փոխանցվող պարամետրեր։ Թող
ձեր ինտերֆեյսը նաև սահմանի, որ օգտագործողը
կունենա գետտերներ (բայց ոչ սետտերներ) անվան և
տարիքի համար։
Ստեղծեք User դաս, որն իրականացնում է
iUser ինտերֆեյսը։