Я нахожусь в проекте по созданию веб-приложения.Запись в php5.
Когда я создавал пользовательскую систему (вход в систему, регистрация новых пользователей и т. Д.), У меня внезапно появился код базы данных повсюду.Не поймите меня неправильно, я использую одноэлементный класс базы данных с одной функцией запроса.
class MySQLDB {
private staic $instance = null;
private $config;
private $connection = null;
[...]
public function query($query, $other_dbname = NULL) {
$name = $this->config->dbname;
if($other_dbname != NULL) {
$name = $other_dbname;
}
mysql_select_db($name, $this->connection);
$result = mysql_query($query);
[...]
}
Пока все хорошо.Однако куда ставить SQL-запросы?Я имею в виду, что в примерах через Интернет вы видите запросы к базе данных в системе аутентификации, которые сильно связывают два совершенно разных модуля.Что если мы решим не использовать базу данных MySQL?Тогда вам не нужно только поменять класс MySQLDB с подключением и функцией запроса, но все части всего веб-приложения с SQL-запросами в них.
Мое решение состояло в том, чтобы иметь статический класс MySQLQueryer рядом с классом MySQLDB.Где я храню и выполняю ВСЕ запросы SQL.Подобно этой функции register-a-new-user:
public function register($user, $hash, $salt) {
$user = mysql_real_escape_string($user);
$query = "INSERT INTO users ( username, password, salt ) VALUES ( '$user' , '$hash' , '$salt' );";
$ret = $this->db->query($query);
return $ret;
}
Обратите внимание, что все создание хешей и солей выполняется в модуле аутентификации пользователя (то есть не в модуле базы данных).
Считаете ли вы это хорошим решением или есть лучшие? Например, лучше ли создать класс AuthenticationMySQLDatabaseHelper с указанной выше функцией register?То есть каждый отдельный модуль должен иметь свой собственный класс MySQLDatabaseHelper для выполнения запросов.
Может, я делаю проблему больше, чем есть?