Moin!
class db{
private static $instance;
Diese Variable willst du nur protected haben, weil sie ggf. weitervererbt werden soll, wenn du die Klasse db erweiterst.
public static $db_host;
public static $db_user;
public static $db_pw;
public static $db_name;
public static $db_connection;
Diese ganzen Variablen gehören ebenfalls protected. Und als Namenskonvention: Protected- und Private-Variablen schreibt man mit einem Unterstrich als erstem Zeichen. Dann sieht man ihnen auf den ersten Blick ihre nichtöffentliche Zugriffsmöglichkeit an.
Konstruktor - private - kann nicht aufgerufen werden
private function __construct(){}
Dasselbe gilt für den Konstruktor. Protected, nicht private.
Datenbankwerte setzen
public static function db_set_vars($host,$name,$pw,$dbname){
$db_host=$host;
$db_user=$user;
$db_pw=$pw;
$db_name=$dbname;
}
Schon mal überlegt, was diese Funktion macht? Sie kopiert Daten - aber nicht in die Variablen der Klasse, sondern nur in lokale Variablen der Funktion!
Zur Datenbank verbinden
public static function db_connect()
{
$db_connection = new MySQLi($db_host,$db_user,$db_pw,$db_name);
Schon mal überlegt, wo diese Variablen herkommen? Mit Error-Level E_ALL hättest du hier viermal NOTICE gekriegt, weil du auf uninitialisierte lokale Variablen zugreifst.
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
Ein sehr uneleganter Ausstieg. Aber das kriegen wir später... :)
} else {
echo "alles korrekt";
}
}
Query ausführen
public static function db_query($query){
$db_connection->query($query);
Ebenfalls gilt hier: Worauf greifst du in Form von $db_connection zu? Tipp: Es ist nicht die in dem Objekt gespeicherte Variable $this->db_connection ... ;)
}
- Sven Rautenberg