Ich habe derzeit zwei Klassenhierarchien: eine für die Behandlung von Fehlern und eine andere für die Protokollierung.Soll ich Delegation hier verwenden?
Ich frage mich
1), ob es vorteilhaft ist, Fehler zu einer Klasse der Handhabung von der Fehlerbehandlung getrennt zu delegieren
Und
2) ob das, was ich habe ein gutes Design ist.
Hier ist, was ich habe:
class ErrorHandler {
public __construct(ErrorLogger $ErrorLogger) {
...
$this->setErrorPageURL('/error.php');
}
public function setErrorPageURL($errorPageURL);
public function handle() {
...
$this->ErrorLogger->log($errorNumber, $errorMessage, $errorFile, $errorLine);
header("Location: $this->errorPageURL");
}
}
class ErrorLogger {
abstract protected function log($errorNumber, $errorMessage, $errorFile, $errorLine);
// Overridable.
protected function getExtraLogMessage() {
return null;
}
}
class EmailerErrorLogger extends ErrorLogger {
public function __construct($toEmailAddress, $fromEmailAddress) {
...
}
protected function log($errorNumber, $errorMessage, $errorFile, $errorLine) {
// collect error information and various pieces of information
mail(...);
}
}
register_shutdown_function(array(new ErrorHandler(new EmailerErrorLogger()), 'handle'));