youtube_com_chevichelov
@youtube_com_chevichelov

Правильно ли написан класс для работы с базой данных?

Собственно сам класс:
class DB {
	private $dbprefix;
	private $mysqli;
	private $connect = true;

	function __construct() {
		$config = new Config();
		$this->dbprefix = $config->dbprefix;
		if ($this->connect) {
			$mysqli = new mysqli($config->host, $config->user, $config->password, $config->db);
			$mysqli->set_charset("utf8");
			if ($mysqli->connect_errno) {
				echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
				exit();
			}
			$this->mysqli = $mysqli;
			$this->connect = false;
		}
    }
	
	
	public function query($data) {
		$data = preg_replace('/#_/i', $this->dbprefix, $data);
		return $this->mysqli->query($data);
	}
	
	public function insert_query($name, $data) {
		foreach($data as $key => $val){
			$field .= '`'.$this->result()->real_escape_string($key).'`, ';
			if (is_numeric($val)) {
				$value .=' '.$this->result()->real_escape_string($val).', ';
			} else {
				$value .=' \''.$this->result()->real_escape_string($val).'\', ';
			}
		}
		$name = preg_replace('/#_/i', $this->dbprefix, $name);
		$name = $this->result()->real_escape_string($name);
		$this->mysqli->query('INSERT INTO `'.$name.'` ('.rtrim($field, ', ').') VALUES ('.rtrim($value, ', ').')');
		return $this->mysqli->insert_id;
	}
	
	public function result() {
		return $this->mysqli;
	}
}

Готовые решения не интересны, хочу изучить данный вопрос самостоятельно.
Вопросы:
1. Не создаёт ли такой класс несколько подключений к БД и если создаёт, как их предотвратить?
2. Данный функционал класса написан грамотно? (других функций для работы с бд мне ненужно, всё что нужно описано выше)
  • Вопрос задан
  • 349 просмотров
Пригласить эксперта
Ответы на вопрос 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1. dbprefix это антипаттерн imho.
2. config хорошо бы как то явно получать
3. в случае ошибок стоит кидать эксепшен
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы