PHP function MySQL Problem

Oder etwas einfacher ausgedrückt, so dass es auch ein Anfänger versteht:

Wenn man eine Klasse instanziieren will (also bspw. mit new Bla()...), muss diese Klasse, also der Code davon bekannt sein. Normalerweise lagert man eine Klasse in ein einzelnes PHP-Script aus, der Name des PHP-Scripts entspricht dann der Klasse. Damit der Code beim Zugriff bekannt ist, muss man dieses Script natürlich irgendwo inkludieren.

Ein Autoloader kümmert sich darum, das dies automatisch passiert, wenn es notwendig ist. Dazu prüft der Autoloader, sobald man einen Klassen-Zugriff macht (egal ob mittels new-Operator oder statischer Klassenmethode) ob die Klasse PHP bereits bekannt ist (mit der Funktionalität von class_exists.

Wenn die Klasse nicht bekannt ist, wird eine dem Autoloader registrierte Funktion aufgerufen, die vom Programmierer bereitgestellt werden muss. In dieser Funktion kann der Programmierer definieren, wie nach der Klasse gesucht werden soll, also wo und wie das Script inkludiert werden soll, in dem sich der Code für die Klasse befindet.

Hier noch ein Beispiel anhand deiner DB-Klasse:

PHP:
// Angenommen, die DB-Klasse liegt in einem Script mit dem Namen DB.php und dieses Script ist noch nicht inkludiert worden
// Das Script selbst liegt im Unterordner "klassen"

function __autoload($klassenname)
{
  include "klassen/" . $klassenname . ".php";
}

DB::getInstance()->query("SELECT * FROM users....");
 
Zuletzt bearbeitet:
Alles klar.
Ich hatte am Anfang auf jeder Seite einfach die Datei included. Deswegen ging es ja auch.
Hab jetzt aber den autoloader eingefügt und greife dann mit new DB() auf den Seiten, wo ich die Datenbank brauche, auf die Klasse zu.

Danke für die Hilfe :)
 
Zurück