Are there common use cases for Marker-Interfaces in PHP development, and if so, what are some examples?
Marker-Interfaces in PHP are interfaces that do not contain any methods but are used to mark a class as having a certain characteristic or behavior. Common use cases for Marker-Interfaces include implementing specific functionality based on the interface a class implements or for type checking at runtime.
// Example of a Marker-Interface in PHP
interface Loggable {
// This interface does not contain any methods
}
class Logger {
public function log($message) {
echo $message;
}
}
class FileLogger extends Logger implements Loggable {
// This class implements the Loggable interface
}
class DatabaseLogger extends Logger {
// This class does not implement the Loggable interface
}
function logMessage(Logger $logger, $message) {
if ($logger instanceof Loggable) {
$logger->log($message);
} else {
echo "Logger is not loggable.";
}
}
$fileLogger = new FileLogger();
$databaseLogger = new DatabaseLogger();
logMessage($fileLogger, "Logging message to file.");
logMessage($databaseLogger, "Logging message to database.");