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.