ich habe eine Datei die die Verbindung zur Datenbank aufbaut und zwei selbst geschriebene Klassen.
Wie kann ich innerhalb der Klassen auf die $db Variable zu greifen ohne das ich in jeder Funktion einen include auf die Verbindungsdatei machen muss, bzw. wie würdet ihr das Umsetzen?
Verbindungsdatei [db.inc.php]:
$db = new mysqli('localhost', 'root', 'root', 'db');
if (mysqli_connect_error())
die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
if (!$db->set_charset("utf8"))
die("Datenbank Verbindung konnte nicht auf UTF-8 erfolgreich hergestellt werden.");
Schöner wäre es, wenn du eine DB class schreibst und lässt die Fahrzeug class diese erweitern:
z.B.: (kurz Skizziert):
<?php
class DB {
private $DB = null;
// version 1
function __construct(){ // oder als constructor und eigener variable
$db = new mysqli('localhost', 'root', 'root', 'db');
[...]
$DB->$db;
}
// version 2
private function connect(){
$db = new mysqli('localhost', 'root', 'root', 'db');
if (mysqli_connect_error())
exit('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error()); // hier habe ich das die() durch exit() ausgetauscht (ist einfach freundlicher :P)
if (!$db->set_charset("utf8"))
exit("Datenbank Verbindung konnte nicht auf UTF-8 erfolgreich hergestellt werden.");
return $db;
}
}
class Fahrzeug extends DB {
function getKennzeichen($timestamp = NULL) {
$timestamp = date('Y-m-d H:i:s');
$result = $this->db->query("SELECT ..."); // version 1
$result = $this->connect()->query("SELECT ..."); // version 2
return $result;
}
}
$output = new Fahrzeug();
$output->getKennzeichen();
?>