Сегодня я попытался преобразовать свои функции в PHP-класс. Я пробовал с некоторыми основными шагами.PHP и Mysqli OOP - Обработка базы данных
<?php
class DataBase {
private $host;
private $user;
private $password;
private $db;
private $mysqli;
function __construct() {
$this->host = "localhost";
$this->user = "root";
$this->password = "";
$this->db = "my_database";
$this->mysqli = new mysqli($this->host, $this->user, $this->password, $this->db);
}
function __destruct() {
$this->mysqli->close();
}
public function query($query, $params = '', $bind_result) {
$stmt = $this->mysqli->prepare($query);
//Need to change this to process the array of params
$stmt->bind_param('i', $params);
$stmt->execute();
//Change this to handle array of bind
$stmt->bind_result($bind_result);
//Loop the result and store it in a temp array
$stmt->fetch();
//Don't print the statement. Just close the statement and return the array.
printf("%s\n", $bind_result);
/* close statement */
$stmt->close();
}
}
?>
Я должен создать другой класс. Я создал в базе данных одну фиктивную таблицу.
<?php
class Dummy {
private $database;
function __construct() {
$this->database = new Database();
}
public function getAllDummy() {
$query = "SELECT name FROM dummy WHERE id = ?";
$this->database->query($query, 1, 'name');
}
}
?>
Но я не думаю, что это правильный способ сделать все. Я чувствую, что некоторые из них верны, а некоторые из них ошибаются.
Когда я вызываю функцию query(), мне нужно постоянно связывать базу данных в методе построения каждого класса? Или мне нужно изменить класс базы данных на статические функции? Поэтому я могу вызывать такие функции, как Database :: query();
Кажется, мне нужно создать все с самого начала. Эта модель уже доступна в Интернете? как cakephp, codeigniter
Вы можете использовать что-то под названием «инъекция зависимостей», например '__construct (Database $ db)' в другом классе; Чтобы сделать запрос с несколькими параметрами, ознакомьтесь с [этим комментарием] (http://www.php.net/manual/en/mysqli-stmt.bind-param.php#104073). Некоторые люди здесь рекомендуют использовать PDO для более «гладкого» интерфейса. – Passerby