Запіс на курсы па HTML, CSS, JavaScript, PHP, Python, фрэймворкам і CMS,
а таксама: дапамога ў пошуку працы і заказаў, стажыроўка на рэальных праектах→
⊗ppOpIfCD 70 of 107 menu

Аб'яўленне канструктара ў інтэрфейсе ў ААП у 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, які рэалізуе інтэрфейс iUser.

byenru