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);
}
}
?>
Интерфейсда конструкторни эълон килиш бизга нима берди? Биринчи навбатда, биз синфда конструкторни амалга оширишни унутмаймиз. Иккинчидан, интерфейс синовсиз курсатадики, синф конструктори икки параметрни кабул килиши керак: кўп эмас, кам эмас. Бу хам бизни tasodifiy xatolikdan саклайди.
Нега биз алохида iRectangle интерфейсини яратдик,
Figure интерфейсига конструкторни ку́шмадик?
Чунки барча фигуралар турли хил томонлар сонига эга
ва шунунг учун конструкторда турли хил параметрлар
сонига эга. Шу сабабдан биз алохида, айнан прямоугольниклар
учун ани́қ интерфейс яратишга мажбур бўлдик.
iCube интерфейсини яратинг, у
Куб шаклини тасвирласин. Сизнинг интерфейсингиз
куб томонини параметр сифатида кабул килувчи конструкторни,
шунга ўхшаш куб хажми ва юзасини олиш учун методларни
тасвирласин.
iCube интерфейсини амалга оширувчи
Cube синфини яратинг.
iUser интерфейсини яратинг, у
фойдаланувчини тасвирласин. Фарз килинадики,
фойдаланувчида исм ва ёш бу́либ, бу майдонлар
конструктор параметрлари орқали ўтказилади. Сизнинг
интерфейсингиз шуни хам белгиласинки, фойдаланувчида
исм ва ёш учун геттерлар (амма сеттерлар эмас) бу́лади.
iUser интерфейсини амалга оширувчи
User синфини яратинг.