Не скажу за тонкости PHP , но в целом направление верное. Прежде всего интерфейс выполняет 2 роли, это интерфейс взаимодействия класса и апкастинг. Интерфейс взаимодействия это все публичные члены и методы класса в своей совокупности к которым можно обратиться, интерфейс структуризирует для всех классов один интерфейс взаимодействия, как человек выше говорил, по договору. Но это только малая часть преимуществ, основная сила это Апкаст, приведение от частного к общему. Грубо говоря вы назначили реализацию интерфейса классу, потом вы можете привести класс к интерфейсу, и обьявить тип интерфейса присвоив в переменную любой класс который будет иметь реализацию интерфейса, таким образом мы получаем очень динамическую систему которая может менять реализацию, манеру поведения, и много чего еще, без изменения в коде, по одному только интерфейсу взаимодействия. У вас 100500 классов, а обращаться вы к ним можете абсолютно одинаково, вам не нужно прописывать для каждого типа. для каждого другого обьекта вызов сугубо его методов.