Guten Abend/Morgen!
Vielleicht hilft es dir, wenn du dir ein paar Tutorials zu verschiedenen Themen ansiehst in denen objektorientiert gearbeitet wird. Ich kann dir hier die Tutorial-Reihe PHP & OOP unter
Tutorials > PHP > Anwendungen empfehlen.
Außerdem solltest du deine Struktur nochmal überdenken. Das wichtigste ist, dass du deinen Content vom Layout der Seite trennen kannst. Eine TemplateEngine kann in Zusammenarbeit mit einem FrontController dabei helfen. Auch zu diesem Thema findest du ein Tutorial im Bereich Anwendungen.
Noch ein paar Anmerkungen zur Objektorientierung. Die Objektorientierung ermöglicht es dem Entwickler abstrakte Abbildungen der Realität in Form von Klassen zu erstellen. Instanzen solcher Klassen nennt man Objekte. Ein gutes Beispiel für eine Klasse ist ein Mitarbeiter einer Universität. Jeder Mitarbeiter besitzt eine Personalnummer, einen Namen und eine E-Mail-Adresse. Diese Merkmale nennt man Attribute einer Klasse. Funktionen, die auf diesen Attributen operieren nennt man Methoden.
- Code: Alles auswählen
<?php
class Employee {
private $persNo
private $name
private $email;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
...
}
?>
Eine Instanz der Klasse Employee wäre zum Beispiel Herr Professor Gerd Kurt, eine andere Dr. Dietmar Wille.
Möchte man nun in unterschiedliche Angestellte unterscheiden wird es etwas schwierig, denn verfahren wir wie oben, müssen wir für jeden Angestellten-Typ, zum Beispiel Professoren, Doktoranten und Studentische Hilfskräfte, eine neue Klasse mit Namen etc. definieren. An dieser Stelle Hilft uns Vererbung. Sie nimmt uns zwar nicht die Implementierung dieser Klassen ab, aber sie erleichtert sie uns. Attribute und Methoden der Eltern-Klasse (Stichwort extends), die mit public oder protected gekennzeichnet sind, sind auch in der Kind-Klasse verfügbar. Die Attribute für den Namen, die E-Mail-Adresse, sowie die Personal-Nummer und die dazugehörigen Getter und Setter Methoden müssen nicht mehr implementiert werdem.
- Code: Alles auswählen
<?php
class Employee {
protected $persNo;
protected $name;
protected $email;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
...
}
class Professor extends Employee {
protected $courses;
public function setCourses($courses) {
$this->courses= $courses;
}
public function getCourses() {
return $this->courses;
}
}
class Phd extends Employee {
private parent;
public function setParent($parent) {
$this->parent= $parent;
}
public function getParent() {
return $this->parent;
}
}
?>
Im obigen Beispiel sehen wir, dass es dank der Vererbung relativ leicht ist schnell und einfach Kind-Klassen aufzubauen.
Objektorientierung kann aber auch Struktur gebend sein. Interfaces definieren zum Beispiel Schnittstellen, auf die von Klassen, die diese einbinden, implementiert werden müssen. Im Tutorial
PHP & OOP - Formulargenerierung und Verarbeitung werden zum Beispiel abstrakte Klassen verwendet um die Schnittstellen zu Filtern und Validatoren zu definieren. Abstrakte Klassen sind praktisch Interfaces, die allerdings bereits einige Methoden und Attribute implementieren bzw. definieren.
Wo macht Objektorientierung Sinn? Objektorientierung macht vorallem Sinn, wenn mehrere Instanzen ein und des selben Objekts benötigt werden, zum Beispiel bei der Arbeit mit Benutzern oder Produkten eines Webshops. Objektorientierung macht außerdem Sinn, wenn ein gewisser Grad an Abstraktion nötig ist. Es ist beispielsweise auf verschiedene Arten möglich Konfigurationen zu speichern. Doch obwohl die Daten in einer Datei, einer MySql oder SqLite-Datenbank gespeichert werden können, sollte der Zugriff, die Schnittstelle immer gleich aussehen, um das entsprechende Modul einfach austauschen zu können.
Ich hoffe ich konnte die Grundlagen etwas beleuchten. Bei Fragen bitte einfach nochmal nachhaken. :-D
Liebe Grüße
Andreas