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.<?php
include("class.errors.php");
class CDB extends CErrors {
public $_filename = null;
public $_error = null;
protected $_mysql_connect = null;
function __construct($filename) {
$error = new CErrors();
$this->_filename = $filename;
if(!empty($this->_filename
)) { if(include($this->_filename)) {
$this->_mysql_connect
= mysql_connect($mysql_data[0
], $mysql_data[1
], $mysql_data[2
]); if($this->_mysql_connect) {
if($mysql_select_db){
$this->_dbname = $mysql_data[3];
$this->_error = $error->getErrors('DB', 0,false, true);
} else { $this->_error = $error->getErrors('DB', 2,true, true); }
} else { $this->_error = $error->getErrors('DB',1,true, true); }
} else { $this->_error = $error->getErrors('FILE', 1, true, true); }
}
}
function __destruct() {
}
}
?>
Wywoływując tą klasę musimy podać ścieżkę gdzie znajduje się plik konfiguracyjny engine.inc.php.
Klasa CErrors:<?php
class CErrors {
protected $_logFileName = '../logs/logs.php';
protected function getErrors($name,$id,$show,$setLogToFile) {
$name = (string)$name;
$id = (int)$id;
0 => 'Połączono z serwerem MySQL',
1 => 'Nie można połączyć się z serwerem MySQL',
2 => 'Nie można wybrać preferowanej bazy danych w MySQL'
),
1 => 'Nie można wybrać pliku zawietającego hasła dostepu do bazy danych w MySQL'
)
);
if($setLogToFile) { CErrors::setLogToFile($errors[$name][$id]); }
if($show) { return $errors[$name][$id]; }
}
protected function setLogToFile($error) {
$date = date("Y-m-d H:i:s"); $handle = fopen($this->_logFileName
, "a"); $saveError = $date.' Error: "'.$error.'"'."<br /> \n";
} else {
$handle = fopen($this->_logFileName
, "w"); chmod($this->_logFileName,0600);
$saveError = $date.' Error: "'.$error.'"'." <br /> \n";
}
if($handle) { $fwrite = fwrite($handle,$saveError); } }
}
?>
Plik engine.inc.php<?php
$mysql_data = array("localhost", "root", "root", "corner1"); ?>
Plik index.php<?php
$db = new CDB("../goo/engine.inc.php");
?>
Pytanie takie:
- Czy opłaca się tak kombinować, czy się zakombinowałem, czy w ogóle jest to dobre?
- Czy, jeśli chodzi o kod, jest w miarę przejrzysty?
- 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.