Agar kelas Anda beroperasi secara statis, Anda perlu melakukan beberapa hal.
Pertama, buat koneksi statis, mis
private static $connection;
Kedua, mengapa semua garis bawah?
define('DB_HOST', 'localhost');
define('DB_NAME', 'your_db_name');
define('DB_USER', 'username');
define('DB_PASS', 'password');
Juga, mengapa menggunakan konstanta kelas sama sekali? Cukup gunakan konstanta yang telah Anda tentukan.
Ketiga, kehilangan konstruktor. Anda tidak dapat mengharapkan untuk membuat instance dari kelas ini dan menggunakannya secara statis. Saya akan menggunakan pendekatan pemuatan lambat untuk koneksi
private static function getConnection() {
if (self::$connection === null) {
$dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8',
DB_HOST, DB_NAME);
self::$connection = new PDO($dsn, DB_USER, DB_PASS, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
));
}
return self::$connection;
}
Kemudian, metode publik Anda akan memanggil metode ini secara internal. Saya juga akan menyempurnakan dbDataArray
Anda metode untuk menunjukkan kepada Anda cara mengembalikan array asosiatif
public static function dbDataArray($query, $params = array()) {
$stmt = self::getConnection()->prepare($query);
$stmt->execute($params);
return $stmt->fetchAll();
}