Wyjątki a wzorce projektowe

Założenie: Pokażemy, jak obsługa wyjątków może być ulepszona za pomocą wzorców projektowych Strategy i Decorator.

Krok po kroku:

  1. Implementacja wzorca Strategy dla różnych strategii obsługi wyjątków:
  2. 
    getMessage());
      }
    }
    
    class EmailExceptionHandler implements ExceptionHandler {
      public function handle(Exception $e) {
        // wysyłanie emaila z informacją o błędzie
      }
    }
    
    class Context {
      private ExceptionHandler $handler;
    
      public function __construct(ExceptionHandler $handler) {
        $this->handler = $handler;
      }
    
      public function execute() {
        try {
          // jakiś kod, który może rzucić wyjątek
          throw new Exception("Błąd!");
        } catch (Exception $e) {
          $this->handler->handle($e);
        }
      }
    }
    
    $logHandler = new LogExceptionHandler();
    $context = new Context($logHandler);
    $context->execute();
    
    
    $emailHandler = new EmailExceptionHandler();
    $context = new Context($emailHandler);
    $context->execute();
    ?>
    				

    Ten kod definiuje interfejs ExceptionHandler i dwie jego implementacje: LogExceptionHandler i EmailExceptionHandler. Klasa Context używa strategii do obsługi wyjątków.

  3. Użycie wzorca Decorator do dodania dodatkowej funkcjonalności do obsługi wyjątków:
  4. 
    handler = $handler;
      }
    
      abstract public function handle(Exception $e);
    }
    
    class LoggingDecorator extends ExceptionHandlerDecorator {
      public function handle(Exception $e) {
        error_log("Dodatkowe logowanie: " . $e->getMessage());
        $this->handler->handle($e);
      }
    }
    
    $logHandler = new LogExceptionHandler();
    $decoratedHandler = new LoggingDecorator($logHandler);
    $context = new Context($decoratedHandler);
    $context->execute();
    ?>
    				

    W tym przykładzie LoggingDecorator dodaje dodatkowe logowanie do istniejącej strategii obsługi wyjątków.

Ten przykład pokazuje, jak wzorce projektowe Strategy i Decorator mogą pomóc w tworzeniu elastycznego i rozszerzalnego systemu obsługi wyjątków w PHP.

Zachęcamy do dalszego zgłębiania tematu obsługi wyjątków i wzorców projektowych w PHP!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *