Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System logowania i rejestracji
symonides
post
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 12.11.2010

Ostrzeżenie: (0%)
-----


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ć?

Ten post edytował symonides 12.11.2010, 22:22:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Mephistofeles
post
Post #2





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


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).
Go to the top of the page
+Quote Post
symonides
post
Post #3





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 12.11.2010

Ostrzeżenie: (0%)
-----


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?

Ten post edytował symonides 12.11.2010, 23:03:33
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #4





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


Ż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.
Go to the top of the page
+Quote Post
symonides
post
Post #5





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 12.11.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
CuteOne
post
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował CuteOne 13.11.2010, 05:01:40
Go to the top of the page
+Quote Post
symonides
post
Post #7





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 12.11.2010

Ostrzeżenie: (0%)
-----


Dziękuję smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 07:19