Burada heyet kullanmalı mıyım?

1 Cevap php

Onları açmak için hataları ve başka işleme için bir: Ben şu anda iki sınıf hiyerarşileri var. Ben hata işleyicisi ayrı ve 2) ne var, iyi bir tasarım olup olmadığını bir sınıf için hata işleme temsilci avantajlı olup olmadığını) 1 merak ediyorum.

İşte ne var:

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

1 Cevap

Ben hata işleyicisi sadece hatayı oturum daha bazı başka işler yapmak zorunda çünkü bu yapı, mantıklı düşünüyorum.

Kendilerini uygulamak kaydediciler chain of responsibility pattern