Om je klas statisch te laten werken, moet je een paar dingen doen.
Maak eerst de verbinding statisch, bijv.
private static $connection;
Ten tweede, waarom al die onderstrepingstekens?
define('DB_HOST', 'localhost');
define('DB_NAME', 'your_db_name');
define('DB_USER', 'username');
define('DB_PASS', 'password');
En waarom überhaupt klasseconstanten gebruiken? Gebruik gewoon de constanten die u al hebt gedefinieerd.
Ten derde, verlies de constructor. Je kunt niet verwachten dat je een instantie van deze klasse maakt en gebruik het statisch. Ik zou gaan voor een luie aanpak voor de verbinding
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;
}
Dan zouden uw openbare methoden deze methode intern aanroepen. Ik zal ook invulling geven aan uw dbDataArray
methode om u te laten zien hoe u een associatieve array kunt retourneren
public static function dbDataArray($query, $params = array()) {
$stmt = self::getConnection()->prepare($query);
$stmt->execute($params);
return $stmt->fetchAll();
}