Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System logowania i rejestracji
Forum PHP.pl > Forum > PHP
symonides
Cześć, na potrzeby swojej firmy chciałbym stworzyć prostą stronę z panelem administracyjnym(logowanie i edycja danych oraz dodawanie nowych osób przez panel administracyjny). Problem mam z rozplanowaniem klas, które dotyczą tytułowego skryptu.
Są cztery klasy: DB, Register, Login i Session - każda w osobnym pliku. Chciałbym, aby było to ze sobą w miarę spójne więc rozplanowałem to następująco:

  1. class DB { } // łączy się z bazą
  2.  
  3. class Session { } // mały manager sesji
  4.  
  5. class Register extends DB { } // rejestrowanie użytkowników, dostępne z poziomu PA
  6.  
  7. class Login { } // logowanie - nie da się extends DB, Session więc co zaproponujecie?


Klasa do logowania ma korzystać i z bazy danych i z sesji. Jak to rozplanować?
Mephistofeles
Od początku źle to rozplanowałeś.

Rejestracja nie powinna dziedziczyć z bazy.
Poza tym nie twórz klas rejestracji, logowania, tylko użytkownika (profil, zarządzanie) i kolekcji użytkowników (dodawanie, pobieranie).
symonides
Czyli logowanie i rejestrację do jednej klasy i w tej klasie po prostu wywołać klasę odpowiedzialną za połączenie z bazą danych?

Klasa kolekcji użytkownika - co masz na myśli pisząc pobieranie?

EDIT: skoro rejestracja nie powinna dziedziczyć db to jakakolwiek klasa powinna?
Mephistofeles
Żadna. Nie łącz funkcjonalności bazy z zarządzaniem użytkownikami.

Kolekcja -> zbiór użytkowników.
$userCollection->retrieveActiveUsers()
$userCollection->retrieveUserById()
itp., jak w Doctrine albo Propelu.

Do modelu użytkownika przekazuj instancję klasy obsługującej bazę danych.
symonides
Niestety nie znam Propela i Doctrine, PHP jest moim hobby - programuję głownie dla siebie, znajomych.

Już wiem co zrobić z klasą odpowiedzialną za bazę danych, ale co zrobić z tą odpowiedzialną za sesje? Rozumiem, że Login extends Session {} to nie najlepsze rozwiązanie?

Jeszcze taka prośba, znacie może jakieś artykuły, które tłumaczą na czym powinno polegać dziedziczenie - przykłady, wywody na ten temat?
CuteOne
Używaj instancji:

  1.  
  2. $b = new B;
  3.  
  4. class A {
  5. static private $instance = null;
  6.  
  7. static public function getInstance() {
  8.  
  9. if (self::$instance == null) {
  10.  
  11. $c = __CLASS__;
  12. self::$instance = new $c();
  13. }
  14.  
  15. return self::$instance;
  16. }
  17.  
  18. public function path($path='miniatury/') {
  19.  
  20. return 'image/'.$path;
  21. }
  22. }
  23.  
  24. class B {
  25.  
  26. public function __construct() {
  27. $my_path = A::getInstance()->path();
  28. echo $my_path;
  29. }
  30. }
symonides
Dziękuję smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.