Logowanie z użyciem wzorców projektowych (np. Singleton, Factory)
Założenie: Zbudujemy prosty system logowania, wykorzystując wzorzec Singleton do zarządzania pojedynczym obiektem logowania i wzorzec Factory do tworzenia różnych typów logów (np. do pliku, bazy danych).
Krok po kroku:
- Stworzenie klasy Singleton dla logowania:
- Stworzenie klasy Factory do tworzenia różnych typów logów:
- Użycie loggera:
log[] = date('Y-m-d H:i:s') . ' - ' . $message;
}
public function getLog() {
return $this->log;
}
}
?>
Tworzymy klasę `Logger` jako singleton. Metoda `getInstance()` zapewnia, że istnieje tylko jedna instancja tej klasy. Metoda `log()` dodaje wiadomość do tablicy `$log`, a `getLog()` zwraca całą historię logów.
Klasa `LoggerFactory` tworzy różne typy loggerów w zależności od parametru `$type`. W tym przykładzie obsługuje logi do pliku (założenie, że klasa `FileLogger` istnieje) i bazy danych (założenie, że klasa `DatabaseLogger` istnieje). Domyślnie zwraca instancję `Logger`.
log("Użytkownik zalogował się.");
$logs = $logger->getLog();
print_r($logs);
?>
W tym kroku pobieramy logger za pomocą fabryki i zapisujemy log. `print_r($logs)` wyświetla zawartość loga.
Ten przykład pokazuje podstawowe wykorzystanie wzorców projektowych Singleton i Factory w kontekście logowania. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z różnymi typami loggerów oraz bardziej zaawansowanymi wzorcami projektowymi.