⊗ppOpIfCD 70 of 107 menu

Deklarace konstruktoru v rozhraní v OOP v PHP

V rozhraní lze také deklarovat konstruktor třídy. Podívejme se na příklad. Předpokládejme, že jsme se rozhodli vytvořit třídu Rectangle, která bude mít metody pro výpočet plochy, obvodu, a také konstruktor přijímající dva parametry. Pojďme popsat naši třídu pomocí rozhraní:

<?php interface iRectangle { public function __construct($a, $b); // konstruktor se dvěma parametry public function getSquare(); public function getPerimeter(); } ?>

Pojďme napsat implementaci našeho rozhraní 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); } } ?>

Co nám přinesla deklarace konstruktoru v rozhraní? Zaprvé, nezapomeneme implementovat konstruktor v třídě. Zadruhé, rozhraní explicitně určuje, že konstruktor třídy musí přijímat dva parametry: ani více, ani méně. To nás také ochrání před náhodnou chybou.

Proč jsme vytvořili samostatné rozhraní iRectangle, a nepřidali konstruktor do rozhraní Figure? Protože všechny obrazce mají různý počet stran a tedy i různý počet parametrů v konstruktoru. Proto jsme museli vytvořit samostatné, přesnější rozhraní konkrétně pro obdélníky.

Vytvořte rozhraní iCube, které bude popisovat obrazec Krychle. Nechť vaše rozhraní popisuje konstruktor, který jako parametr přijímá stranu krychle, a také metody pro získání objemu krychle a plochy povrchu.

Vytvořte třídu Cube, která implementuje rozhraní iCube.

Vytvořte rozhraní iUser, které bude popisovat uživatele. Předpokládá se, že uživatel bude mít jméno a věk a tato pole budou předána parametry konstruktoru. Nechť vaše rozhraní také určuje, že uživatel bude mít gettery (ale ne settery) pro jméno a věk.

Vytvořte třídu User, která implementuje rozhraní iUser.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout