Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Używanie klasy w innej klasie
skw
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 14.11.2008

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


Cześć, chcę wykonać zapytanie do db w klasie, ale wyskakuje błąd
  1. Fatal error: Call to a member function query_select() on a non-object in [...] on line 50


funkcja która powoduje błąd:
  1. function CheckUser() {
  2. if($this->user &&
  3. !empty($this->user) &&
  4. $this->pass &&
  5. !empty($this->pass)
  6. ) {
  7.  
  8. $query = $db->query_select("SELECT * FROM users WHERE
  9. user_name = '$this->user' &&
  10. user_pass = '$this->pass'
  11. ");
  12.  
  13. if(!mysql_num_rows($query)) {
  14. return false;
  15. echo 'nie ok';
  16. } else {
  17. //$this->CreateSession();
  18. echo 'ok';
  19. }
  20. }
  21. }


Myślę że to dlatego, że chcę użyć innej klasy w klasie, ale szukałem w google jak to rozwiązać i nawet przybliżenia mojego problemu nie było
Go to the top of the page
+Quote Post
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Głównie to dlatego, że używasz zmiennej, której wcześniej nie zadeklarowałeś i nie przypisałeś jej obiektu, o czym świadczy komunikat błędu. Poczytaj o zasięgu zmiennych, jak już się dowiesz że tak nie można, przeczytaj o wzorcach projektowych a tam z kolei dowiesz się o sposobach przekazywania jednego obiektu do drugiego, a tych sposobów jest conajmniej kilka..
Go to the top of the page
+Quote Post
darko
post
Post #3





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Przekaż (albo w konstruktorze, albo w jakiejś metodzie) utworzoną instancję bazy do klasy, w której korzystasz z dobrodziejstw obsługi bazy, np.

  1. class DB
  2. {
  3. // kod obsługujący zapytania do bazy
  4. }
  5. $odb = new DB();
  6.  
  7. class MojaKlasa
  8. {
  9. protected $_db = null;
  10. // za pomocą konstruktora
  11. public function __construct($db = null)
  12. {
  13. if(!is_null($db) && $db instanceof DB))
  14. {
  15. $this->_db = $db;
  16. }
  17. }
  18. // za pomocą metody:
  19. public function setDatabaseInstance(DB $db)
  20. {
  21. if(!is_null($this->_db))
  22. {
  23. $this->_db = $db;
  24. return $this;
  25. }
  26. }
  27.  
  28. public function checkUser($id)
  29. {
  30. if(!is_null($this->_db))
  31. {
  32. $query = $this->_db->query_select(... // itd. return true if exists, otherwise false
  33. }
  34. }
  35. }
  36.  
  37. $myClass = new MyClass($odb);
  38.  
  39. // lub:
  40. $myClass = new MyClass();
  41. if($myClass->setDatabaseInstance($odb)->checkUser(5))
  42. {
  43. echo 'użytkownik istnieje!';
  44. }
  45. else
  46. {
  47. echo 'nie ma takiego użytkownika';
  48. }


--------------------
Nie pomagam na pw, tylko forum.
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: 22.08.2025 - 02:42