Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] klasa do obsługi bazy danych - oop
dwwa
post 20.10.2011, 21:30:06
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 1
Dołączył: 14.09.2011

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


próbuję napisać klasę do obsługi bazy danych mysql, z oop u mnie marnie, dopiero zaczynam

mam takie coś:
  1. <?php
  2.  
  3. class SQL {
  4.  
  5. private $db_host = DB_HOST;
  6. private $db_user = DB_USER;
  7. private $db_pass = DB_PASS;
  8. private $db_name = DB_NAME;
  9.  
  10. public $connection;
  11. public $sql_error;
  12.  
  13. public function sql_connect() {
  14. if ($connection = mysql_connect($this->db_host, $this->db_user, $this->db_pass)) {
  15. if (mysql_select_db($this->db_name)) {
  16. $this->connection = $connection;
  17. return true;
  18. }
  19. else {
  20. echo $this->sql_error = mysql_error();
  21. return false;
  22. }
  23. }
  24. else {
  25. echo $this->sql_error = mysql_error();
  26. }
  27. }
  28.  
  29. }
  30.  
  31. ?>

czy takie coś jest w miarę dobrze napisane?
Go to the top of the page
+Quote Post
Mephistofeles
post 20.10.2011, 21:31:48
Post #2





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Nie.
mysql_ to zamierzchła przeszłość. Dzisiaj mamy PDO, nie musisz pisać własnego opakowania.
Go to the top of the page
+Quote Post
darko
post 20.10.2011, 21:40:18
Post #3





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

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


Do nauki podstaw chyba większość z nas opakowywała jakąś funkcjonalność bazodanową. Oczywiście z kodu żadnego użytku nie będzie, ale dla celów edukacyjnych takie rzeczy można pisać "do szuflady". To tak:
- metoda łącząca nas z bazą powinna przyjmować parametry: host, user, pass, db_name, opcjonalnie port U Ciebie bierze te dane z pól klasy i ... ok, ale nie ma tutaj możliwości podania tych parametrów, a powinno w takiej metodzie być miejsce na to;
- gdzie są metody CRUD ? Dopisz;
- nigdy przenigdy nie robimy echo, print itd w metodzie. Metoda powinna zwracać określoną wartość lub wartości, ale nigdy wyrzucać bezpośrednio na ekran jakichkolwiek danych, po prostu zamiast echo $this->sql_error = mysql_error(); wystarczy przypisać $this->sql_error = mysql_error(); i dopisać metodę getLastError() która zwróci $this->sql_error;
Osobiście poćwiczyłbym rozszerzając istniejącą klasę PDO, która i tak ma już większość tego, co jest potrzebne, w każdym razie powodzenia w nauce!


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
dwwa
post 20.10.2011, 21:40:42
Post #4





Grupa: Zarejestrowani
Postów: 47
Pomógł: 1
Dołączył: 14.09.2011

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


ok dzięki za odp

Cytat(darko @ 20.10.2011, 22:40:18 ) *
- metoda łącząca nas z bazą powinna przyjmować parametry: host, user, pass, db_name, opcjonalnie port U Ciebie bierze te dane z pól klasy i ... ok, ale nie ma tutaj możliwości podania tych parametrów, a powinno w takiej metodzie być miejsce na to;

jak z pól? mam plik np. config.php a w nim:
  1. DEFINE('DB_HOST', 'localhost')

czy nawet w index.php przed załadowaniem klasy można takie coś dać

jaką polecacie klasę do napisania na początek nauki oop?

Ten post edytował dwwa 20.10.2011, 21:44:12
Go to the top of the page
+Quote Post
by_ikar
post 21.10.2011, 12:02:49
Post #5





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

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


Kod
jaką polecacie klasę do napisania na początek nauki oop?


Jaką kolwiek wink.gif ja swoją pierwszą klasę jaką napisałem, to był pager, którego co prawda zdążyłem już kilkanaście razy zmodyfikować (ulepszyć), ale ogólny zarys działania klasy, pomijając drobne poprawki używam do dnia dzisiejszego i sprawuje się całkiem dobrze smile.gif
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: 7.05.2025 - 05:35