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%)
-----


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

Robię np:
  1. <?php
  2. require 'mysqli.class.php';
  3. $sqli->delete("delete from users where log='admin'");
  4. ?>

I dostaje błąd:
  1. <?php
  2. [b]Fatal error[/b]:  Call to undefined method Sqli::query() in [b]C:wampwwwmysqlimysqli.class.php[/b] on line [b]91[/b]
  3. ?>

Co najdziwniejsze dla mnie w klasie user, działa wszystko bez problemu jakiegokolwiek, a w tej klasie do obsługi bazy danych nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 29.12.2025 - 23:17