Frage zu PHP OOP Tutorial

Sry für DBLPost

Ich hab grad in den Serverlogs geschaut und das hier gefunden:

[Sat Oct 08 18:43:08 2011] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function DoSQL() on a non-object in C:\\xampp\\htdocs\\inc\\suche.php on line 5, referer: http://localhost:81/index.php?p=suche
[Sat Oct 08 18:43:09 2011] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function DoSQL() on a non-object in C:\\xampp\\htdocs\\inc\\suche.php on line 5, referer: http://localhost:81/index.php?p=suche
[Sat Oct 08 18:43:11 2011] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function DoSQL() on a non-object in C:\\xampp\\htdocs\\inc\\suche.php on line 5, referer: http://localhost:81/index.php?p=suche
[Sat Oct 08 18:43:12 2011] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function DoSQL() on a non-object in C:\\xampp\\htdocs\\inc\\suche.php on line 5, referer: http://localhost:81/index.php?p=suche
[Sat Oct 08 21:06:27 2011] [error] [client 127.0.0.1] File does not exist: C:/xampp/htdocs/favicon.ico
[Sat Oct 08 21:06:27 2011] [error] [client 127.0.0.1] File does not exist: C:/xampp/htdocs/favicon.ico
[Sat Oct 08 21:06:27 2011] [error] [client 127.0.0.1] File does not exist: C:/xampp/htdocs/favicon.ico
[Sat Oct 08 21:06:35 2011] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function DoSQL() on a non-object in C:\\xampp\\htdocs\\inc\\suche.php on line 5, referer: http://localhost:81/
[Sat Oct 08 21:06:36 2011] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function DoSQL() on a non-object in C:\\xampp\\htdocs\\inc\\suche.php on line 5, referer: http://localhost:81/
[Sat Oct 08 21:06:36 2011] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function DoSQL() on a non-object in C:\\xampp\\htdocs\\inc\\suche.php on line 5, referer: http://localhost:81/
[Sat Oct 08 21:06:36 2011] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function DoSQL() on a non-object in C:\\xampp\\htdocs\\inc\\suche.php on line 5, referer: http://localhost:81/

//EDIT: Ich habs hingekriegt: Ich musste die Class.php Datei Überall includen, wo ich die Befehle verwende.

Gibts da keine bessere Lösung? Muss ich wirklich in JEDER datei, wo ich $DbCon verwende die Verbindung deklarieren?
 
Zuletzt bearbeitet:
Ja, das ist so. Aber das hat nichts mit der Klasse an sich zu tun. Das wäre auch so, wenn du prozedural programmieren würdest. Die Funktionalität muss mindestens einmal eingebunden sein. Sprich,

index.php
news.php
guestbook.php

Wenn diese Scripts alle Daten aus der DB holen, musst du in jedem von ihnen die Klasse includen.

Edit: Du musst aber nicht jeder Datei die Verbindung neu erstellen. Du kannst es so machen:

Benutze das Script DB.php und programmiere dort deine Klasse. Außerdem erstellst du in dieser Datei eine Instanz von der Klasse DB. Dann includest du in alle Haupt-Scripts die DB.php.
 
Wie meinst du das mit Instanz on der Klasse erstellen in der Datei?

Ich hab jetzt mal meine Seite komplett umgestellt auf die OOP Methode und muss sagen: GEIL wie das jetzt läuft. Irgendwie hab ich das Gefühl, das die Seite jetzt bisschen schneller läuft.
 
Eine Instanz erzeugt man so:

PHP:
$DbCon = new DB(....);

Diese Zeile kann man entweder in jeder Datei hinterlegen, in der man Datenbankzugriff benötigt. Oder man schreibt diese Zeile in eine Datei (z.B. ganz unten in die DB.php) und includet diese Datei in jedes Script, in dem der DB-Zugriff benötigt wird (z.B. mit require_once).
 
Zurück