Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Klasa Database w user_Class
Forum PHP.pl > Forum > Przedszkole
goartur
Chcialbym uzywac class Database w innych classach(chodzi mi o sprawdzanie danych o uzytkowniku), lecz nie wiem jak to zrobic moje pliki:
connection.php
  1. const DB_HOST = 'localhost';
  2.  
  3. const DB_NAME = 'enigma';
  4.  
  5. const DB_USERNAME = 'root';
  6.  
  7. const DB_PASSWORD = '';
  8.  


  1.  
  2. require 'connection.php';
  3. class db
  4. {
  5. public function db()
  6. {
  7. $this->db = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
  8.  
  9.  
  10. if (mysqli_connect_errno()) {
  11.  
  12. echo "Error: Could not connect to database.";
  13.  
  14.  
  15. }
  16.  
  17. }
  18. }
  19.  

user_Class
  1. class user_access{
  2.  
  3. public function check_login($login,$password){
  4. $password = sha1($password);
  5. $sql = "SELECT * FROM admins WHERE username = '$login' AND password = '$password'";
  6. }
  7.  
  8. }


Teraz moje pytanie jak moge wykonac zapytanie do mysql z user_Class pobierajac baze z class db?

Fred1485
Według mnie dziedziczenie tutaj pomoże.
Crozin
1. Klasy, klasach, nie żadne class/classach.
2. Czy dane do połączenia z bazą danych wydają Ci się... stałe? Przecież to się może codziennie zmieniać.
3. Po co Ci w ogóle klasa DB, skoro nie ma ona niczego? Dlaczego nie użyjesz bezpośrednio klasy MySQLi czy ew. PDO?
4. Dziedziczenie jest tu złym rozwiązaniem. Niby od kiedy użytkownik/dostęp-dla-użytkownika jest jakąś wyspecjalizowaną formą bazy danych?
5. Powinieneś skorzystać z kompozycji, tj. w klasie UserAccess w konstruktorze przekazać obiekt połączenia z bazą danych.
goartur
Cytat(Crozin @ 25.06.2015, 07:56:41 ) *
1. Klasy, klasach, nie żadne class/classach.
2. Czy dane do połączenia z bazą danych wydają Ci się... stałe? Przecież to się może codziennie zmieniać.
3. Po co Ci w ogóle klasa DB, skoro nie ma ona niczego? Dlaczego nie użyjesz bezpośrednio klasy MySQLi czy ew. PDO?
4. Dziedziczenie jest tu złym rozwiązaniem. Niby od kiedy użytkownik/dostęp-dla-użytkownika jest jakąś wyspecjalizowaną formą bazy danych?
5. Powinieneś skorzystać z kompozycji, tj. w klasie UserAccess w konstruktorze przekazać obiekt połączenia z bazą danych.


Czesc mozesz mi powiedziec jak przekazac obiekt polaczenia z baza?
viking
  1. $pdo = new PDO();
  2.  
  3. class test {
  4. public function __construct(\PDO $pdo){}
  5. }


Generlanie możesz:
- roszerzyć klasę db
- przekazać obiekt
- wykorzystać jakiś wzorzec registry
- wykorzystać DI
goartur
Cytat(viking @ 25.06.2015, 10:44:28 ) *
  1. $pdo = new PDO();
  2.  
  3. class test {
  4. public function __construct(\PDO $pdo){}
  5. }


Generlanie możesz:
- roszerzyć klasę db
- przekazać obiekt
- wykorzystać jakiś wzorzec registry
- wykorzystać DI



Ale ja uzywam mysql , i jestem nowy w oop

Mam polaczenie:
  1. class db
  2. {
  3. public function db()
  4. {
  5. $this->db = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
  6.  
  7.  
  8. if (mysqli_connect_errno()) {
  9.  
  10. echo "Error: Could not connect to database.";
  11.  
  12.  
  13. }
  14.  
  15. }
  16. }


Jak mam przekazac obiekt do klasy user_Access?
  1. class user_access{
  2.  
  3.  
  4. public function check_login($login,$password){
  5. $password = sha1($password);
  6. $sql = "SELECT * FROM admins WHERE username = '$login' AND password = '$password'";
  7.  
  8. }
  9.  
  10. }





W tym momecie mam cos takiego :
  1. $db = new db();
  2. $userDB = new user_access($db);
  3. class user_access{
  4.  
  5. public function __construct(\DB $db){
  6. $this->db = $db;
  7.  
  8. }
  9.  
  10. public function check_login($login,$password){
  11. $password = sha1($password);
  12. $sql = "SELECT * FROM admins WHERE username = '$login' AND password = '$password'";
  13. $result = $this->db->
  14. }
  15.  
  16. }
Crozin
Jeżeli nie masz pojęcia n/t OOP to może zacznij od... przeczytania dok. PHP/kursu by chociaż elementarne podstawy poznać? Później weź się za połączenie z bazą danych.

Cytat
Generlanie możesz:
- roszerzyć klasę db
- przekazać obiekt
- wykorzystać jakiś wzorzec registry
- wykorzystać DI
Rozszerzenie klasy (dziedziczenie) będzie tutaj błędem, przekazanie obiektu to właśnie DI (poprawne rozwiązanie), a wykorzystanie rejestru również będzie słabym rozwiązaniem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.