OOP mit PHP5 - Einstiegstutorial 3 - Einführung
1. Die Abschnitte
- Einführung
- Die MySQL-Klasse Teil 1
- Die MySQL-Klasse Teil 2
- Die MySQL-Klasse Teil 3
- Die Abstract-Klasse Teil 1
- Die Abstract-Klasse Teil 2
- Nutzung der Klassen
2. Das Ziel
In diesem Tutorial wollen wir uns ein wenig mit Konstruktoren, Destruktoren, Vererbung, und Autoload beschäftigen. Dazu basteln wir uns eine kleine MySQL-Klasse, auf die wir aber nicht direkt zugreifen werden. Stattdessen setzen wir eine weitere Klasse ein, die als eine Art "Abstraktionsschicht" dient, also zum Beispiel Methoden der MySQL-Klasse anhand des Abfragetyps aufruft.
Wichtig!
Da offenbar einige Anfänger dazu neigen, völlig kritiklos jedweden Code zu übernehmen, um ihn auf ihre Projekte zu übertragen, sag ich zu diesem Tutorial mal Folgendes. Hier geht es nur um Prinzipien! Also um das Verständnis elementarer Dinge. Für den produktiven Einsatz ist das hier nicht gedacht! Und außerdem völlig sinnfrei. Und nicht mal besonders abstrakt. Also arbeitet euch hier durch, versucht zu verstehen, um was es geht, und dann vergesst ganz schnell, wie ich hier mit der so genannten "Abstraktionsschicht" umgegangen bin. Das macht man anders, aber dazu komme ich irgendwann mal.
3. Die Dateien
Diesmal arbeiten wir nicht(!) alles in einer Datei ab, sondern schaffen ein wenig Ordnung. Ihr benötigt für dieses Tutorial folgende Struktur.
tutorial_3.php
-
class
(Ordner)MySQL.class.php
(Datei)AbstractSQL.class.php
(Datei)dataexeception.class.php
(Datei)
Die Datenbank
Nehmt irgendeine, die euch zur Verfügung steht, selbst wenn es sich dabei um die Bilddatenbank von eurem letzten Ballermann-Urlaub handelt. Auf die SQL-Abfragen gehe ich nicht mehr ein, das solltet ihr mittlerweile selber können!
4. Vorbereitung
Also ihr habt euch für eine Datenbank entschieden. Legt nun die oben beschriebene Ordnerstruktur mit den entsprechenden Dateien an.
Wichtig!
-
Ihr bindet die drei Dateien
MySQL.class.php
,AbstractSQL.class.php
unddataexeception.class.php
nicht überrequire
oderinclude
in dietutorial_3.php
ein! -
Die Klassennamen heißen so, wie die entsprechende Datei (ohne
.class.php
), alsoclass MySQL
undclass AbstractSQL
. -
In unserem Beispiel ist
MySQL
die Elternklasse vonAbstractSQL
, also bekommt letztere die notwendige Erweiterungclass AbstractSQL extends MySQL
.
Eure drei Dateien sehen dann genau(!) so aus und nicht anders.
// tutorial_3.php
<?php
error_reporting(E_ALL & ~ E_NOTICE);
?>
// MySQL.class.php
<?php
class MySQL
{
}
?>
// AbstractSQL.class.php
<?php
class AbstractSQL extends MySQL
{
}
?>