Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Tworzenie klasy
Loped
post
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 9.04.2009

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


Witam. Chciałbym stworzyć klasę użytkownika, która bdzie zawierała wszystkie dane z tabeli 'uzytkownik'. Pierwszy raz to robię i chciałbym stworzyc taki efekt:

Kod
   if ($uzytkownik['rank'](lub $uzytkownik -> rank) !="Admin")
    {
        echo 'Nie jesteś Adminem!';
    }


Zmienna $uzytkownik by zawierała ta klasę i wskazywała ID użytkownika który jest aktualnie zalogowany.

Próbuję to zrobic w taki sposób:

Kod
class Uzytkownik
  {
      var $user;
      var $id;
      var $rank;


Teraz gorzej z funkcją. Wzoruje się na klasie z silnika gry Vallheru, gdzie bazuje tam smarty i szablony.

Kod
     function Player($pid)
      {
          global $db;
          $stats = $db -> Execute("SELECT * FROM players WHERE id=".$pid);
          $this -> user = $stats -> fields['user'];


Powyższy kod to kawałek klasy z owego silnika. Jak mogę napisać taką klasę, aby uzyskać tamten efekt? Co zawiera zmienna $pid? Bo próbuje to zrobić lecz mi nie wychodzi.

Ten post edytował Loped 18.05.2009, 15:26:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Próbuję to zrobic w taki sposób:
Kod
class Uzytkownik
{
     var $user;
     var $id;
     var $rank;
Mamy PHP5, więc nie stosuj PHP4.
Cytat
Teraz gorzej z funkcją. Wzoruje się na klasie z silnika gry Vallheru, gdzie bazuje tam smarty i szablony.
Na podstawie 5 linii kodu jakie widzę moge powiedzieć... nie wzoruj się na tym.

1) Jeżeli chcesz mieć coś w stylu:
  1. <?php
  2. $user = new User();
  3. echo $user['username']
  4. ?>
Czyli by móc się odwoływać do obiektu jak do tablicy, klasa User musi implementować interface ArrayAccess.
Chociaż IMO lepiej by było jakby klasa udostępniała zestaw getterów
  1. <?php
  2. $user = new User();
  3. echo $user->getUsername();
  4. ?>
Oczywiście może udostępniać gettery oraz implementować ArrayAccess jednocześnie.


Klasa User wg mnie powinna reprezentować każdego użytkownika - również niezalogowanego - tak więc proces autoryzacji mógłby u Ciebie wyglądać tak.
  1. <?php
  2. //gdzieś na początku robisz sobie
  3. $user = new User();
  4.  
  5. //później może być jakiś tam kod
  6.  
  7. //w skrypcie logującym dajesz jedynie
  8. $user->signIn($id_uzytkownika);
  9. ?>
Oczywiście wcześniej przeprowadzasz cały proces walidacji danych, logowania, by ostatecznie przekazać jeden parametr z id użytkownika. Klasa w swoim wnętrzu pobierze odpowiednie dane, które będą przechowywane w sesji.
Go to the top of the page
+Quote Post
webdice
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Proszę dodać tag w tytule, w innym wypadku wątek zostanie zamknięty.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 10:29