Topics Object-Oriented PHP Interfaces & Abstract Classes
intermediate 14 min read

Interfaces & Abstract Classes

Contracts with interfaces, abstract classes, and when to use each.

Interfaces

interface Logger {
public function log(string \$message): void;
public function error(string \$message): void;
}

class FileLogger implements Logger {
public function log(string \$message): void {
// write to file
}
public function error(string \$message): void {
\$this->log("[ERROR] \$message");
}
}

Abstract Classes

abstract class Database {
abstract public function connect(): void;
public function query(string \$sql): array {
\$this->connect();
// execute query
}
}

Interface vs Abstract

  • Interface: contract only (no implementation), multiple inheritance
  • Abstract: can have implementation, single inheritance

Multiple interface implementation

A class can implement multiple interfaces.

Examples

<?php
interface CanFly { public function fly(): string; }
interface CanSwim { public function swim(): string; }
class Duck implements CanFly, CanSwim {
    public function fly(): string { return 'Duck flying'; }
    public function swim(): string { return 'Duck swimming'; }
}
echo (new Duck)->fly() . ' ' . (new Duck)->swim();

Your Notes

Sign in to take notes for this lesson.

Discussion

Sign in to join the discussion.

Flashcards

Sign in to create flashcards.