Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa połączenia z MySQL, Klasa łącząca się z MySQL i wyświetlanie błędów.
Fluke
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

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


Witam.
Piszę pierwszy raz na tym forum wiec proszę o wyrozumiałość. Od nie dawna uczę się PHP a tym bardziej programowania obiektowego więc będę robił dużo błędów wiec proszę o poprawianie mnie.

Stworzyłem klasę CDB w której jest łączenie się z bazą danych. Wywoływana jest w konstruktorze. Następnie stworzyłem klasę w odzielnym pliku do obsługi błędów(Głównie wyświetlanie oraz zapis logów do pliku). W pliku engine.inc.php są zapisane hasła do łączenia się z bazą danych.



Tutaj klasa CDB.

  1. <?php
  2. include("class.errors.php");
  3.  
  4. class CDB extends CErrors {
  5.  
  6. public $_filename = null;
  7. public $_error = null;
  8. protected $_mysql_connect = null;
  9.  
  10. function __construct($filename) {
  11. $error = new CErrors();
  12. $this->_filename = $filename;
  13.  
  14. if(!empty($this->_filename)) {
  15. if(include($this->_filename)) {
  16. $this->_mysql_connect = mysql_connect($mysql_data[0], $mysql_data[1], $mysql_data[2]);
  17. if($this->_mysql_connect) {
  18. $mysql_select_db = mysql_select_db($mysql_data[3], $this->_mysql_connect);
  19. if($mysql_select_db){
  20. $this->_dbname = $mysql_data[3];
  21. $this->_error = $error->getErrors('DB', 0,false, true);
  22. } else { $this->_error = $error->getErrors('DB', 2,true, true); }
  23. } else { $this->_error = $error->getErrors('DB',1,true, true); }
  24. } else { $this->_error = $error->getErrors('FILE', 1, true, true); }
  25. }
  26. }
  27.  
  28. function __destruct() {
  29. mysql_close($this->_mysql_connect);
  30. }
  31. }
  32. ?>

Wywoływując tą klasę musimy podać ścieżkę gdzie znajduje się plik konfiguracyjny engine.inc.php.


Klasa CErrors:


  1. <?php
  2. class CErrors {
  3. protected $_logFileName = '../logs/logs.php';
  4.  
  5. protected function getErrors($name,$id,$show,$setLogToFile) {
  6. $name = (string)$name;
  7. $id = (int)$id;
  8.  
  9. $errors = array(
  10. 'DB' => array(
  11. 0 => 'Połączono z serwerem MySQL',
  12. 1 => 'Nie można połączyć się z serwerem MySQL',
  13. 2 => 'Nie można wybrać preferowanej bazy danych w MySQL'
  14. ),
  15. 'FILE' => array(
  16. 1 => 'Nie można wybrać pliku zawietającego hasła dostepu do bazy danych w MySQL'
  17. )
  18. );
  19. if($setLogToFile) { CErrors::setLogToFile($errors[$name][$id]); }
  20. if($show) { return $errors[$name][$id]; }
  21.  
  22. }
  23.  
  24. protected function setLogToFile($error) {
  25. $date = date("Y-m-d H:i:s");
  26. if(file_exists($this->_logFileName)) {
  27. $handle = fopen($this->_logFileName, "a");
  28. $saveError = $date.' Error: "'.$error.'"'."<br /> \n";
  29. } else {
  30. $handle = fopen($this->_logFileName, "w");
  31. chmod($this->_logFileName,0600);
  32. $saveError = $date.' Error: "'.$error.'"'." <br /> \n";
  33. }
  34. if($handle) { $fwrite = fwrite($handle,$saveError); }
  35. }
  36. }
  37.  
  38. ?>


Plik engine.inc.php

  1. <?php
  2. $mysql_data = array("localhost", "root", "root", "corner1");
  3. ?>


Plik index.php
  1. <?php
  2. $db = new CDB("../goo/engine.inc.php");
  3. echo $db->_error;
  4. ?>


Pytanie takie:
  1. Czy opłaca się tak kombinować, czy się zakombinowałem, czy w ogóle jest to dobre?
  2. Czy, jeśli chodzi o kod, jest w miarę przejrzysty?
  3. Czy dobrze są stworzone klasy. Do tych klas bym dopisał następne metody ale chcę wiedzieć czy w ogóle dobrze myślę.



Dziękuję za jakiekolwiek opinie i rady.
Pozdrawiam.
Go to the top of the page
+Quote Post

Posty w temacie


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: 20.08.2025 - 11:13