2009-05-12 6 views
0

J'ai actuellement deux hiérarchies de classes: une pour gérer les erreurs et une autre pour les consigner.Dois-je utiliser la délégation ici?

Je me demande

1) s'il est avantageux de déléguer la gestion des erreurs à une classe séparée du gestionnaire d'erreurs

Et

2) si ce que j'ai une bonne conception.

Voici ce que j'ai:

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')); 

Répondre

1

Je pense que cette structure logique, parce que votre gestionnaire d'erreurs doit faire certaines autres tâches que vous connecter simplement l'erreur. Les enregistreurs eux-mêmes pourraient implémenter le chain of responsibility pattern

Questions connexes