Интерфейс позволяет писать код, зависящий от абстракции, а не от конкретного класса. Можно подставить любую реализацию, удовлетворяющую контракту. Это основа Dependency Injection и тестирования.
interface Logger {
public function log(string $message): void;
}
class FileLogger implements Logger { ... }
class NullLogger implements Logger { ... }