Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Polaczenie z mysql OOP
redelek
post
Post #1





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Witam,

Przerobiłem troszkę materiału i proszę o poradę. Zanim się napiszę i potem wszystko będzie źle (IMG:style_emoticons/default/smile.gif)
Napisałem klasę do łączenia się z mysql i nawet działa. Pytanie mam takie czy jest to dobrze napisane ?
Czy na coś zwrócić uwagę i gdzieś mam jakieś błędy? które Wy widzicie ?

  1. ini_set('display_errors','1');
  2. class mMySQL
  3. {
  4.  
  5. public $Serwer, $Baza, $Uzytkownik, $Haslo;
  6. #-#############################################
  7. # Nawiazywanie polaczenia z baza
  8. function Polacz ($link=false) {
  9. $this->link_id=@mysql_connect($this->Serwer,$this->Uzytkownik,$this->Haslo,$link);
  10.  
  11. if (!$this->link_id) {
  12. $this->blad("Nie mogę podłączyć się do serwera: <b>$this->Serwer</b>.");
  13. }
  14.  
  15. if(!@mysql_select_db($this->Baza, $this->link_id)) {//no database
  16. $this->blad("Nie mogę wybrać bazy danych: <b>$this->Baza</b>.");
  17. }
  18. if(@mysql_select_db($this->Baza, $this->link_id)) {
  19. mysql_query("SET NAMES 'utf8'");
  20. mysql_query("SET CHARACTER_SET_CLIENT=utf8");
  21. mysql_query("SET CHARACTER_SET_RESULTS=utf8");
  22. }
  23. }#-#Polacz()
  24. #-#############################################
  25. # zamykanie polaczenia z baza
  26. function Zamknij() {
  27. if(!@mysql_close($this->link_id)){
  28. $this->blad("Nie można zamknąć połączenia z serwerem :(");
  29. }
  30. }#-#zamknij()
  31. #-#############################################
  32. # komunikaty o błędach
  33. function blad($msg='') {
  34. if($this->link_id>0){
  35. $this->error=mysql_error($this->link_id);
  36. $this->errno=mysql_errno($this->link_id);
  37. }
  38. else{
  39. $this->error=mysql_error();
  40. $this->errno=mysql_errno();
  41. }
  42. echo "<b>Błąd aplikacji</b><br />";
  43. echo "<hr>";
  44. echo "<b>Komunikat:</b>".$msg."<br />";
  45. echo "<b>MySQL błąd: </b>".$this->error."<br>";
  46. echo "<b>MySQL kod: </b>".$this->errno."<br>";
  47. echo "<br>";
  48. }#-#blad()
  49.  
  50. }
  51. ## JAK TO DZIAŁA
  52. $SQL = new mMySQL();
  53. $SQL->Serwer = 'localhost';
  54. $SQL->Baza = 'mysql';
  55. $SQL->Uzytkownik = 'root';
  56. $SQL->Haslo = '';
  57. $SQL->Polacz();
  58.  
  59.  
  60. $SQL->Zamknij();
  61. ?>


Czy na przykład użyć protected Polacz; ?

Ten post edytował redelek 17.05.2010, 11:42:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lobopol
post
Post #2





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


No dla mnie to jest nieco dziwna klasa, czemu nie używasz konstruktorów/destruktorów i nie deklarujesz typów metod? Dodatkowo metody powinny zwracać jakieś wartości, a nie wyświetlać za pomocą echo czyli nie:

  1. function metoda(){
  2. echo "costam";
  3. }


a

  1. public function metoda(){
  2. return $this->wartosc;
  3. }


Dalej idą metody i zmienne do których nie powinno się mieć dostępu z zewnątrz (czyli login do bazy danych/hasło/itp.) powinny być ustawione na private albo protected (przy dziedziczeniu)


Sama klasa(prosta wersja) powinna wyglądać mniej więcej tak:
  1. class Database{
  2. private $dbHandler;
  3. public function __construct($dbLogin, $dbPassword, $dbHost, $dbName) {
  4. $this->dbHandler = @mysql_connect($dbHost,$dbLogin,$dbPassword) or $this->sql_error(mysql_error());
  5. mysql_select_db($dbName,$this->dbHandler);
  6. mysql_query('SET NAMES utf8');
  7. return true;
  8. }
  9.  
  10. public function query($query){
  11. //tu kasowanie/update/dodawanie do sql jeżeli błąd to $this->sql_error(mysql_error());
  12. return true;
  13. }
  14.  
  15. public function select($query){
  16. //tu funkcja do wyciągania selecta z bazy danych
  17. }
  18.  
  19. private function sql_error($error){
  20. //tu funkcje raportowania błędów sql np. zapis do pliku nie powinno się raczej wyświetlać użytkownikom dokładnego błędu
  21. die('Wystąpil problem z bazą danych.');
  22. }
  23. public function __destruct(){
  24. //tu niszczenie połączenia bazy
  25. }
  26.  
  27. }
  28. a użycie:
  29.  
  30. $db = new Database($dbLogin, $dbPassword, $dbHost, $dbName); //tworzenie obiektu
  31. $db->select($query); //zapytanie select do bazy
  32. unset($db); //niszczenie obiektu


Ten post edytował lobopol 17.05.2010, 12:40:18
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 15:24