OOP mit PHP5 - Praxistutorial 1 - Konstruktor der Db_Request-Klasse
1. Die Abschnitte
- Einführung
- Konstruktor und Destruktor der Db-Klasse
- Konstruktor der Db_Request-Klasse
- Der erste Zugriff
- SQL-Fehler abfangen
- Zusätzliche SQL-Methoden
- Die Auswertungsschicht
- Abfragen
- Zusammenfassung
2. Ein Hinweis
Wie ich im vorherigen Abschnitt schon sagte, werden wir diesmal die Klasse Db
nicht vererben. Also nichts mit class
Db_Request extends Db
. Ach ja, noch etwas. Im schon erwähnten Projekt gab es noch eine spezielle Fehlerbehandlungsklasse, die
ich hier weg lasse, da es den Rahmen sprengen würde. Darum wird auch in dieser Klasse die Sichtbarkeit aller Methoden auf
public
gesetzt.
3. Der Konstruktor
class Db_Request
{
private $db = false;
public $message = array();
public function __construct()
{
try
{
$this -> db = new Db;
}
catch (Db_Exception $e)
{
$this -> message['status'] = 'failed';
$this -> message['message'] = 'Db Connection Error:'.
$e -> getMessage();
}
}
}
Erläuterung
Zunächst mal erzeugen wir im Konstruktor ein Objekt aus der Klasse Db
($this -> db = new Db;
). Das legen wir
in der privaten Eigenschaft $db
fest. Somit hat man hier einen direkten Zugriff auf alle Methoden und öffentlichen
Eigenschaften dieser Klasse. Und da der Zugang die Abarbeitungsdatei oop_4.php
nicht zu interessieren hat, legen wir die
Sichtbarkeit auf private
.
Da wir das in einem try
-Block machen, können wir im catch
-Abschnitt mögliche Fehlermeldungen abfangen. Dazu
wird die entsprechende Exception per $e -> getMessage()
in die "Array"-Eigenschaft $message
geschrieben.
4. Die Sache mit den Konstruktoren
Bisher habe ich euch mehrmals darauf hingewiesen, dass der Konstruktor der Elternklasse nur unter zwei Bedingungen ausgelöst wird. Erstens,
wenn die "Kindklasse" oder eine andere eingebundene Klasse über keinen verfügt, oder im eigenen Konstruktor eine
parent::__construct
-Anweisung hat.
In diesem Fall ist es anders. Da wir nicht mit Vererbung sondern einem eigenen Objekt arbeiten, wird der Konstruktor der Klasse
Db
automatisch ausgelöst, wenn das Objekt mittels $this -> db = new Db;
erzeugt wird. Das gilt in diesem Fall
auch für den Destruktor. Da der in der Db-Klasse als Sichtbarkeit ein public
hat, so kann der auch durch ein weiteres
"Oberobjekt" gestartet werden. Und das zeige ich euch nun.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt