Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Klasa Database w user_Class
goartur
post 25.06.2015, 00:53:46
Post #1





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 19.10.2014

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


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?

Go to the top of the page
+Quote Post
Fred1485
post 25.06.2015, 06:26:35
Post #2





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Według mnie dziedziczenie tutaj pomoże.


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Crozin
post 25.06.2015, 06:56:41
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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.
Go to the top of the page
+Quote Post
goartur
post 25.06.2015, 09:37:31
Post #4





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 19.10.2014

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


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?
Go to the top of the page
+Quote Post
viking
post 25.06.2015, 09:44:28
Post #5





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


  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


--------------------
Go to the top of the page
+Quote Post
goartur
post 25.06.2015, 10:12:30
Post #6





Grupa: Zarejestrowani
Postów: 233
Pomógł: 27
Dołączył: 19.10.2014

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


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. }


Ten post edytował goartur 25.06.2015, 10:17:08
Go to the top of the page
+Quote Post
Crozin
post 25.06.2015, 10:23:46
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:57