PHP OOP: Co je rozhraní (Object Interface) [5]
Rozhraní (Object Interface) v PHP OOP možná vypadá trochu tajuplně, ale jeho účel je poměrně prostý - umožňuje nám jen deklarovat hlavičky veřejných metod z nějaké třídy.
Znamená to, že daná třída musí obsahovat všechny funkce, které jsou deklarované v interface. Tyto funkce musí být veřejné (public). Jinak řečeno - rozhraní jsou používané k definování veřejných metod, které musí třída obsahovat - pokud tomu tak není, dostaneme chybu... Nic víc na tom není...
Příklad 1 - interface pro jednu třídu
Funguje to tak, že pokud máte např. rozhraní MyClassInterface ke třídě MyClass a ta má veřejnou metodu index(), tak se musí definovat, že třída MyClass implementuje MyClassInterface, což pak vypadá nějak takto:
interface MyClassInterface{
public function index();
}
class MyClass implements MyClassInterface{
public function index(){
echo 'Index OK';
}
}
$c = new MyClass;
$c->index();
Tento kód nám vrátí výsledek:
Index OK
Vlastnosti rozhraní (interface)
Používají se pro:
- Definování veřejných metod třídy
- Definování konstant pro třídu
Nelze použít pro:
- Vytváření instancí
- Definování soukromých a chráněných metod třídy
- Definování vlastností třídy
Vlastnosti
- Jedna třída může implementovat více rozhraní, oddělují se čárkou
- Jedno rozhraní může implementovat více tříd
- Díky rozhraní je možné různým třídám implementovat stejné metody bez ohledu na hierarchii dědičnosti
Příklad 2 - Použití rozhraní (interface) mezi více třídami
interface MyInterface{
const CONSTANT_CI = 'OK';
public function index();
}
class FirstClass implements MyInterface{
public function index(){
echo 'FirstClass Index '.self::CONSTANT_CI . PHP_EOL;
}
public function notInInterface(){
echo 'notInInterface';
}
}
class SecondClass implements MyInterface{
public function index(){
echo 'SecondClass Index '.self::CONSTANT_CI . PHP_EOL;
}
}
$f = new FirstClass;
$f->index();
$s = new SecondClass;
$s->index();
Tento kód nám vrátí:
FirstClass Index OK
SecondClass Index OK