PHP OOP: Co je rozhraní (Object Interface) [5]

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

 

Odkazy

Soubory na github.com

Jak se ti článek líbil?

Komentáře (1)

Kůrovec
Díky za tento seriál o PHP OOP programování :-) Jen tak dál!

Přidat komentář