I'm getting this Error by using this singleton class. Please explain me what i'm doing wrong in that? i'm trying to get the sqli object through constructor.
Fatal error: Call to private DB::__construct() from invalid context in C:\xampp\htdocs\docs\users.php on line 20
<?php
class DB
{
#############################
##### Define Connection ####
#############################
const HOST = 'localhost';
const USER = 'root';
const PASSWORD = '';
const DATABASE = 'ali';
#############################
// Data Member For MySQLi Database Connection
private static $mysqli = NULL;
// Database Connection
private function __construct()
{
@self::$mysqli = new mysqli(self::HOST, self::USER, self::PASSWORD, self::DATABASE);
if (self::$mysqli->connect_error) {
throw new Exception("<b>Database Connect Error: </b>" . self::$mysqli->connect_error);
}
if (self::$mysqli->error) {
throw new Exception("<b>Database Select Error: </b>" . self::$mysqli->error);
}
echo "<span style='color: green; font-size: 18px; font-weight: bold'>Connected</span>
<br>"; // For testing //
return self::$mysqli;
}
// Class Level Static Function to Get Database Connection
public static function get_connection()
{
if ( ! isset(self::$mysqli) )
{
self::$mysqli = new self();
}
return self::$mysqli;
}
}
?>
my 2nd file where i'm using this class
<?php
require_once 'DB.php';
class users extends DB
{
public function get_results()
{
$sqli = DB::get_connection();
$user_data = $sqli->query("SELECT * FROM `users`");
while($row = $user_data->fetch_object())
{
echo $row->name . "<br>";
}
}
}
$user = new users;
try {
$user->get_results();
} catch (Exception $e) {
echo $e->getMessage();
}
?>