Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] błąd w klasie
Lejto
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


Mam taki fragment index.php
  1. include("config.php");
  2. include("libs/db.class.php");
  3. $db = new DB();
  4. include("libs/core.class.php");
  5. $c = new core($db);
  6. include("function.inc.php");
  7. $f = new functions();

wszystko chodzi
wchodzę na stronę gdzie rejestruje usera
połączenie z bazą jest wywołuje funkcje sprawdzającą
  1. global $db;
  2. global $page;
  3. global $f;
  4.  
  5. include("libs/user.class.php");
  6. $u = new User($db);
  7.  
  8. $user = $u->getByUsername($_POST['username']);

połączenie z bazą w tym pliku jest ale nie ma już jego w klasie user.class.php jak juz wcześniej wymieniłem plik code.class.php (tam wszystko działa)
user.class.php
  1. class User
  2. {
  3. public $uid;
  4. public $fields = array();
  5.  
  6. public function __construct($sql)
  7. {
  8. $this->sql = $sql;
  9. $this->uid = null;
  10. $this->fields = array('username' => '',
  11. 'password' => '',
  12. 'emailAddr' => '',
  13. 'isActive' => false);
  14. }
  15. public static function getByUsername($username)
  16. {
  17. echo 'aa';
  18. $db = $this->sql;
  19. echo 'aa';
  20. $sql = $db->query('select * from users where username = $username');
  21.  
  22. }

db.class.php
  1. class DB{
  2.  
  3. public $_lacz;
  4.  
  5. public function __construct()
  6. {
  7. $this->_lacz = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
  8. if(mysqli_connect_errno() != 0)
  9. {
  10. echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error(). ', przepraszamy.';
  11. }
  12. }

dlaczego nie mam połączenie w klasie user?
reszta klas działa normalnie
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
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
dziedziczę jeszcze jeszcze functions bo jest tam funkcja którą potrzebuję do wylosowania tekstu
Nie o to chodzi w dziedziczeniu. Jest sporo materiałów dotyczących obiektówki - traktujących o teorii - poczytaj jeszcze zanim zabierzesz się za pisanie.
Cytat
#6 mógłbyś wyjaśnić?
Po prostu zwróciłem uwagę na to, że źle sobie nazywasz zmienne. Pod $sql umieszczasz sobie obiekt, który z SQLem nie ma wiele wspólnego. Po prostu: zła praktyka wg mnie.
Cytat
11,12 to też (ucze się cały czas oop) nie wiem jeszcze wszystkiego...
Zastanawiałem się dlaczego nie zrobisz po prostu:
  1. <?php
  2.  
  3. class ABC {
  4. protected $xyz = array('...' => '...', '...' => '...');
  5.  
  6. //...
  7. }
Cytat
#35 i #58 to jak bym miał to poprawić?
Utworzyć kilka nowych klas, gdzie każda odpowiedzialna jest za jedną konkretną rzecz i doprowadzić do współpracy różnych obiektów tych klas między sobą, a nie tak jak teraz masz... jeden obiekt robiący wszystko co się tylko da - ma on za duży zakres obowiązków.
Cytat
#60 no właśnie o tym już kiedyś pisałem potrzebuje tego aby było połączenie, przyjrzyj się klasie łączącej
Eee... ale Ty po prostu robisz niepotrzebnie kolejną referencję do tego obiektu... Zaśmiecasz kod tylko niepotrzebnymi zmiennymi, nie zyskując nic na tym, bo zarówno $db->doSth('...'); jak i $this->db->doSth('...') są bardzo czytelne.
Cytat
#124 jakieś namiary? nie wiem za bardzo o co chodzi
Oczywiście manual PHP, rozdział dotyczący typu danych: String (nie pomyl z listą funkcji operujących na tekscie). Ale jeżeli nie masz tak elementarnej wiedzy z zakresu działania PHP (różnica pomiędzy "test", a 'test') to nie wiem czy dobrym pomysłem jest branie się za prog. obiektowe.
Go to the top of the page
+Quote Post

Posty w temacie
- Lejto   [php] błąd w klasie   4.01.2010, 20:45:02
- - darko   Gdzie masz pole $sql w klasie User ?   4.01.2010, 20:47:10
- - Lejto   jak pole $sql? w core.class mam [PHP] pobier...   4.01.2010, 20:50:48
- - darko   Nie zauważyłem że public static function getByUser...   4.01.2010, 20:53:03
- - skowron-line   [PHP] pobierz, plaintext public [url="htt...   4.01.2010, 20:55:12
- - darko   Jak usuniesz static, to dodaj jeszcze w klasie Use...   4.01.2010, 20:58:05
- - Lejto   usunąłem ale nadal nie chce wykonać zapytania va...   4.01.2010, 21:00:21
- - darko   a dodałeś to pole protected $sql; ?   4.01.2010, 21:01:15
- - Lejto   jakie protected? mam normalną prywatność dla tego...   5.01.2010, 09:08:05
- - darko   Metoda getByUsername nie operuje na polu userId   5.01.2010, 10:48:06
- - Lejto   ale mam to w __get no to jest mam to poprawić?   5.01.2010, 15:34:45
- - darko   Wypełnij pola klasy User analogicznie, jak w metod...   5.01.2010, 15:53:00
- - Lejto   nie za bardzo cię rozumiem, poprawiłem klase, reje...   5.01.2010, 17:18:56
- - Crozin   To może najpierw kilka uwag: #2: Klasa 'User...   5.01.2010, 17:51:34
- - Lejto   dziedziczę jeszcze jeszcze functions bo jest tam f...   5.01.2010, 22:25:27
- - Crozin   Cytatdziedziczę jeszcze jeszcze functions bo jest ...   5.01.2010, 23:40:26
- - Lejto   ok dzięki ale powiedź jeszcze dlaczego nie chce ...   6.01.2010, 18:15:24
- - Crozin   Wyświetl sobie błędy zapytań MySQL...   6.01.2010, 18:32:55
- - Lejto   nie wpadł bym na to problem rozwiązany, błąd był ...   6.01.2010, 20:36:23


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: 12.10.2025 - 11:36