Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> user class + dziedziczenie, Ocena klasy
PawelC
post
Post #1





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Hej piszę sobie klasę users, która jest odpowiedzialna za logowanie i dodanie użytkownika, później dojdzie kasowanie i edycja konta. Moje pytanie brzmi czy sposób w który piszę jest dobry:
  1. <?
  2. class user extends sqli
  3.  {
  4.  
  5.    public function userLogin()
  6.      {    
  7.  
  8.       $this->log=trim($_POST['log']);
  9.       $this->pass=$pass=trim($_POST['pass']);
  10.       $result=$this->mysqli->query("select log,pass from users where log='$this->log' and pass='$this->pass'");
  11.        if(mysqli_num_rows($result)==0)
  12.            {
  13.                echo "brak takiego usera";
  14.             }
  15.             else
  16.             {
  17.                $_SESSION['zalogowany']="$this->log";
  18.                header("Location: test.php");
  19.              }
  20.  
  21.  
  22.            }
  23.            
  24.            
  25.   public function addUser()
  26.            {
  27.  
  28.             $this->log=trim($_POST['log']);
  29.             $this->pass=$pass=trim($_POST['pass']);
  30.             $result=$this->mysqli->query("insert into users values('$this->log','$this->pass')");
  31.             if($result===true)
  32.              {
  33.                  echo "Użytkownik został dodany poprawnie.";
  34.              }
  35.               else
  36.               {
  37.                  echo "Wystąpił błąd podczas dodawania nowego użytkownika!";
  38.              }
  39.  
  40.            }
  41.  
  42.  
  43.  
  44.        }
  45. $user=new user('localhost','root','','katalog');
  46. ?>

I dodawanie użytkownika i samo logowanie działa poprawnie, a mi chodzi o Waszą ocenę czy to jest dobrze napisane. Oczywiście zdaję sobie sprawę, że można to napisać zawsze lepiej.

Ten post edytował ExPlOiT 2.05.2009, 22:57:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
PawelC
post
Post #2





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Sorki że wracam do tego tematu, ale wyczarowałem pewny kod, a dokładnie wykorzystanie klasy sqli w klasie user i chciałem się dowiedzieć czy dobrze to zrobiłem. Oto kod:
  1. <?php
  2.  
  3.  
  4.        class sqli
  5.            {
  6.                
  7.                
  8.                
  9.                //Konstruktor
  10.            public function __construct($host,$login,$haslo,$baza)
  11.            {
  12.                $this->mysqli=new mysqli($host,$login,$haslo,$baza);
  13.            }
  14.            
  15.            
  16.            
  17.            
  18.            
  19.            public function getRow($query)
  20.            {
  21.                return $this->mysqli->query($this->query=$query)->fetch_object();
  22.                
  23.            }
  24.                    
  25.            
  26.            
  27.            
  28.            // Pobranie danych z bazy
  29.            public function getRows($query)
  30.            {
  31.                $dane=array();
  32.                $result=$this->mysqli->query($this->query=$query);
  33.                while($wynik=$result->fetch_object()){
  34.                    $data[]=$wynik;
  35.                    
  36.                }
  37.                return $data;
  38.                
  39.                /* $rows=$sqli->getRows("select * from users");
  40.                 foreach($rows as $row)
  41.                 {
  42.                 echo $row->log.' | '.$row->pass;
  43.                 }
  44.                 */
  45.            }
  46.            
  47.            
  48.            
  49.            //Dodawania wartości do bazy danych
  50.            public function insert($query)
  51.            {
  52.                $result=$this->mysqli->query($this->query=$query);
  53.                if($result===true)
  54.                {
  55.                    echo "Dane zostały dodane do tabeli!";
  56.                }
  57.                else {
  58.                    echo "Wystąpił błąd podczas dodawania danych do tabeli!";
  59.                }
  60.            }
  61.            
  62.            
  63.            
  64.            // Aktualizacja danych w bazie
  65.            public function update($query)
  66.            {
  67.                $result=$this->mysqli->query($this->query=$query);
  68.                if($result===true)
  69.                {
  70.                    echo "Dane zostały zaaktualizowane!";
  71.                }
  72.                else {
  73.                    echo "Wystąpił błąd podczas aktualizowania danych!";
  74.                }
  75.            }
  76.            
  77.            
  78.            
  79.            
  80.            // Kasowania z bazy danych
  81.            public function delete($query)
  82.            {
  83.                $result=$this->mysqli->query($this->query=$query);
  84.                if($result===true)
  85.                {
  86.                    echo "Dane zostały usunięte!";
  87.                }
  88.                else {
  89.                    echo "Wystąpił błąd podczas usuwania danych!";
  90.                }
  91.            }
  92.            
  93.            
  94.            // Koniec klasy
  95.        }
  96.        
  97.        
  98.        class User{
  99.              private $db;
  100.  
  101.              public function __construct(sqli $db){
  102.             $this->db = $db;
  103.              }
  104.  
  105.  
  106.              public function addUser($login,$haslo){
  107.             $this->db->insert("insert into user values('$login','$haslo')");
  108.              }
  109.        }
  110. ?>

A tak go używam:
  1. <?php
  2. $db = new sqli('localhost','root','','spam');
  3. $user = new User($db);
  4. $user->addUser('adminek','adminek2');
  5. ?>

Oczywiście kod działa jak należy, tylko chodzi mi o to czy jest to poprawnie napisane. Krótko mówiąc rozumuję iż, w taki sposób jak zrobiłem powyżej, uzyskuje dostęp do klasy sqli oraz jej metod, dobrze myślę czy może się mylę? Wnioskuje to po tym że uzyskałem dostęp do metody update, która jest w klasie sqli.

Ten post edytował ExPlOiT 6.06.2009, 00:11:09
Go to the top of the page
+Quote Post

Posty w temacie
- ExPlOiT   user class + dziedziczenie   2.05.2009, 22:51:26
- - ayeo   Witam! Nie jest różowo Na początek taki deta...   2.05.2009, 23:18:46
- - ExPlOiT   Dodałem wzorzec projektowy singleton i coś mi nie ...   3.05.2009, 08:49:31
- - Crozin   Ale dlaczego [PHP] pobierz, plaintext <?php$res...   3.05.2009, 09:14:18
- - ExPlOiT   CytatPoza tym nie korzystaj z (anty)wzorca Singlet...   3.05.2009, 09:19:33
- - Crozin   CytatTaka była rada ayeo, żeby z niego korzystać.I...   3.05.2009, 09:29:47
- - ExPlOiT   Ok dzięki za rady, coś wykombinuje, bo b...   3.05.2009, 09:35:50
- - Crozin   Na przykład:[PHP] pobierz, plaintext <?php...   3.05.2009, 09:54:24
- - ExPlOiT   Sorki że wracam do tego tematu, ale wyczarowa...   6.06.2009, 00:00:45
- - Crozin   A klasa User ma reprezentować jakiegoś konkretnego...   6.06.2009, 07:31:45
- - ExPlOiT   Ma robić za managera, czyli dodawać user...   6.06.2009, 11:17:34
- - marcio   [PHP] pobierz, plaintext <?phppublic function _...   6.06.2009, 15:28:02
- - Crozin   Co do bazy danych... chyba lepiej będzie skorzysta...   6.06.2009, 15:39:52
- - marcio   Cytat(Crozin @ 6.06.2009, 16:39:52 ) ...   6.06.2009, 15:44:31
- - Crozin   Niech użyje PDO... nauczy się korzystać z całkiem ...   6.06.2009, 15:48:49
- - erix   CytatNiech użyje PDO... nauczy się korzystać z cał...   6.06.2009, 17:18:43
- - ExPlOiT   Czyli krótko mówiąc podążam w dobry...   6.06.2009, 21:21:51
- - marcio   Cytatz tym że mam zamienić MySQLI na PDO To juz za...   6.06.2009, 21:51:49
- - ExPlOiT   Cytat(marcio)To juz zalezy od ciebie ja bym nie zm...   6.06.2009, 22:07:23
- - marcio   CytatNa wielu forach, doradzają mi abym korzystał ...   6.06.2009, 22:21:55
- - ExPlOiT   Krótko mówiąc miałbym 3 klasy w jednym p...   6.06.2009, 22:25:42
- - marcio   CytatMasz rację, tylko nie do wszystkich proj...   7.06.2009, 00:06:09
- - ExPlOiT   Cytat(marcio)No to wlasnie albo korzystasz z FW w ...   7.06.2009, 00:10:02
- - Pr0100   Odnośnie PDO to jeżeli jesteś pocz...   7.06.2009, 00:59:11
- - Crozin   CytatNo to wlasnie albo korzystasz z FW w 100% i z...   7.06.2009, 07:47:00
- - ExPlOiT   Crozin pomysł jak i samo podejście ciekawe zobacz...   7.06.2009, 13:04:16
- - Komunista   Może zrób sobie: - klasę do obsługi...   7.06.2009, 15:52:11


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: 11.10.2025 - 19:27