OOP v PHP: Objektové rozhraní
Objektové rozhraní lze charakterizovat jako šablonu vzoru. Pokud vytváříte velké třídy, které zahrnují a volají další třídy na základě různých okolností, občas se může stát, že budete volat metodu, která není nikde definovaná. Abychom předcházeli takovým chybám, PHP 5 umožňuje specifikovat objektové rozhraní.
Princip spočívá v tom, že vytvoříte kostru třídy a výsledná třída poté kostru jen implementuje. V rozhraní určujete názvy metod a argumenty, které příjmá. Všechny metody v rozhraní musí být typu public
. Objektové rozhraní se narozdíl od tříd definuje klíčovým slovem interface
. Za názvem třídy poté uvádíme frázi implements a název zahrnutého rozhraní.
Pokud následně použijeme metodu, která není v rozhraní, skript skončí chybou.
Zbývá dodat, že třída může zahrnovat i více rozhraní (což je rozdíl oproti dědičnosti, třída může mít pouze jednoho rodiče).
<?php interface Rozhrani{ public function VypisuRozhrani(); public function VypisParametr($parametr); } class Trida implements Rozhrani{ public function VypisuRozhrani(){ echo 'Rozhraní bylo zahrnuto'; } public function VypisParametr($parametr){ echo $parametr; } } $tr = new Trida; $tr->VypisuRozhrani(); $tr->VypisParametr('Vypíše paramtr'); ?>
Příklad ukazuje způsob definice rozhraní a jeho následné zahrnutí třídou Trida. Kdybychom chtěli zahrnout větší počet rozhraní, byla by oddělena čárkou:
<?php //Definice rozhrani Rozhrani a Rozhrani2 class Trida implements Rozhrani,Rozhrani2{ public function VypisuRozhrani(){ echo 'Rozhraní blo zahrnuto'; } public function VypisParametr($parametr){ echo $parametr; } } ?>
Pozn. red.: Zdůrazňujeme, že tento text se týká PHP 5.
Mohlo by vás také zajímat
-
Landing page: Jak vytvořit landing page s vysokým CTR
7. května 2024 -
Zabezpečení e-mailů: Jak můžete chránit vaši firemní komunikaci
13. prosince 2023 -
Umělá inteligence v IT
27. září 2023 -
Lék na phishing a apatii ve světě e-mailového marketingu
18. března 2024
Nejnovější
-
Jak se chránit před podvody na internetu – část 2
14. října 2024 -
Doména .io v ohrožení: Co přinese předání Čagoských ostrovů?
10. října 2024 -
Jak se chránit před podvody na internetu – část 1
8. října 2024
ereste
Bře 26, 2014 v 16:00Niečo tu nesedí. Definícia metody v rozhraní je zbytočná. Nižšie uvedený príklad funguje rovnako ako ten v článku (žiadna chybová hláška):
interface Rozhrani{
// public function VypisuRozhrani();
// public function VypisParametr($parametr);
}
class Trida implements Rozhrani{
public function VypisuRozhrani(){
echo ‚Rozhraní bylo zahrnuto‘;
}
public function VypisParametr($parametr){
echo $parametr;
}
}
$tr = new Trida;
$tr->VypisuRozhrani();
$tr->VypisParametr(‚Vypíše paramtr‘);
jakub
Bře 27, 2014 v 9:58Máš pravdu..tvůj příklad bude fungovat, ale to budou i dvě obyčejné funkce bez použití objektů ;-) Evidentně jsi nepochopil proč a k čemu se interface používá :-)
Martin
Kvě 29, 2014 v 2:28Ahoj, chci se zeptat:
1) interface by se dalo tedy přirovnat k hlavičkovým souborům (.h) v jazyce C? Jen tím jak je PHP blbu vzdorné, tak mu je jedno jestli to v interface je či není, ale ty si tím můžeš přidat přehlednost?
2) Konstanty a atrtibuty tříd při použití interface je lepší mít v „class“ nebo „interface“?
…jinak bylo by dobré doplnit informace/příklad kdy se hodí použití interface a ukázat tak jeho výhody.
Díky
Phil
Lis 12, 2014 v 13:55Myslím, spíš že je špatně udáno: „Pokud následně použijeme metodu, která není v rozhraní, skript skončí chybou.“. Skript skončí chybou, když nedefinujeme metodu z rozhraní, ne když definujeme novou…