Avron2
Новичок
Горожу форум.
Коннект к БД происходит с помощью объекта (Singleton).
Вопрос: нужно ли передавать идентификатор соединения $link от объекта к объекту в констукторы? Это необходимо, так как методы класса SQL, Themes, Topics, Messages будут использовать запросы к БД.
Класс соединения с БД (Singleton):
Класс SQL (функции для работы с БД)
Класс Themes, наследующий SQL:
Коннект к БД происходит с помощью объекта (Singleton).
Вопрос: нужно ли передавать идентификатор соединения $link от объекта к объекту в констукторы? Это необходимо, так как методы класса SQL, Themes, Topics, Messages будут использовать запросы к БД.
Класс соединения с БД (Singleton):
PHP:
<?php
class ConnectDB {
private $server = 'localhost';
private $username = 'root';
private $password = '';
private $link;
static private $instance = NULL;
static function getInstance() {
if (self::$instance == NULL) {
self::$instance = new ConnectDB();
}
return self::$instance;
}
private function __construct() {
}
private function __clone() {
}
function Connect() {
$this->link = mysqli_connect($this->server,$this->username,$this->password) or die("Ошибка подключения к БД: ". mysqli_error());
return $this->link;
}
public function close()
{
return mysqli_close($this->link);
}
public function error()
{
return mysqli_error($this->link);
}
}
?>
Класс SQL (функции для работы с БД)
PHP:
<?php
Class SQL {
protected $db; //БАЗА ДАННЫХ
protected $link; // ИД ПОДКЛЮЧЕНИЯ К БД (возвращает объект класса ConnectDB))
private $result; // результат запроса
public function __construct($link,$db) { // передаем идентификатор соединения с сервером MySQL
$this->link = $link;
$this->db = $db;
}
public function getField($field) { /*возвращает значение поля $field в таблцие Themes, запись id = $this->id */
$db_q = $this->link->query("SELECT ".$this->db." FROM forum.themes WHERE(id=".$this->id.") LIMIT 1");
if(!$db_q)
return false;
$arr = $db_q->fetch_assoc();
return $arr[$field];
}
public function add($id_parent, $theme, $description) { /*Новая тема форума*/
$db_q = $this->link->query("INSERT INTO ".$this->db." (id_parent, theme, description) VALUES ($id_parent, '$theme', '$description')");
if(!$db_q)
return false;
else
return true;
}
public function change($field, $value) { /*Редактирование тема форума*/
$db_q = $this->link->query("UPDATE ".$this->db." SET $field='$value' WHERE ($id=".$this->id.")");
if(!$db_q)
return false;
else
return true;
}
public function delete() { /*Редактирование тема форума*/
$db_q = $this->link->query("DELETE ".$this->db." FROM $field='$value' ".$this->db." WHERE ($id=".$this->id.")");
if(!$db_q)
return false;
else
return true;
}
}
?>
PHP:
class Themes extends SQL {
private $id;
public function __construct($id = NULL, $link = NULL, $db="forum.themes") {
parent::__construct($link,$db);
$this->id = $id;
}
}