Interfejs to nic innego jak wytyczne do utworzenia klasy zgodnej z jakimś wzorcem, bądź mogącej zostać użytej w jakimś kontekście.
Tak jak pisałeś interfejs to deklaracja metod, które MUSZĄ być zaimplementowane w klasie. Przykładem może być na przykład coś takiego:
class niby_tablica
{
public $tablica;
}
Aby policzyć teraz ile elementów ma niby_tablica::$tablica należało by napisać tak:
$nt = new niby_tablica;
Ale łatwiej było by napisać:
$nt = new niby_tablica;
Tyle, że to nie zwróci nam tak naprawdę wielkości zmiennej $tablica. Możemy zaimplementować Interfejs Countable, który ma raptem jedną metodę count()
class niby_tablica implements Countable
{
public $tablica;
{
return count($this->tablica); }
}
$nt = new niby_tablica;
Teraz wyświetli to autentyczną liczbę elementów tablicy $tablica. Ale... czy zadziałało by to bez "implements Countable"? Po prostu samo dodanie metody count() czy da taki sam efekt? - Odpowiedź jest prosta - NIE - dlaczego? Bo php'owa funkcja count sprawdza czy ma do czynienia z obiektem i jeśli tak to sprawdza czy implementuje on interfejs Countable i jeśli tak to używa jego funkcji count() - bo ma pewność, że ów obiekt taką posiada - wymaga to implementacja interfejsu.
Interfejsu służą zatem do deklarowania ogólnych list metod wymaganych przez jakiś obiekt, ale jak widać nie tylko

jeżeli interesujesz się tym dalej - zapoznaj się również z klasą abstrakcyjną