Ada beberapa praktik buruk yang menyebabkan Anda melakukan kesalahan ini.
Jelas, memperluas Pengguna dari Database adalah langkah yang salah. Juga, seluruh kelas Database agak tidak berguna karena tidak melakukan sesuatu yang berguna.
Oleh karena itu saya akan menyarankan untuk
- singkirkan kelas Database yang tidak berguna.
- buat tunggal $db instance dari vanilla mysqli.
- teruskan sebagai parameter konstruktor ke setiap kelas yang membutuhkan koneksi database
database.php:
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli("localhost", "DBUserName", "UserPassword", "SelectedDB");
$db->set_charset('utf8mb4');
myapi.php
<?php
class MyAPI
{
protected $db;
public function __construct($db, $request_uri, $postData, $origin)
{
$this->db = $db;
}
public function getUser($id)
{
$sql = "SELECT * FROM users where id=?";
$stmt = $this->db->prepate($sql);
$stmt->bind_param("s", $id);
$stmt->execute();
$result = $stmt->get_result();
return $result->fetch_assoc();
}
}
app.php
<?php
# require_once 'Database.php';
# require_once 'myapi.php';
require 'vendor/autoload.php'; // autoloading is a must
$api = new MyAPI($db, $request_uri, $postData, $origin);
$user = $api->getUser($_POST['id']);