PHP-Einfach.de
  • PHP Tutorial
  • MySQL Tutorial
  • Für Fortgeschrittene
  • Webhosting
  • Forum

Objektorientierte Programmierung

29. August 2018
  1. Home
  2. »
  3. Für Fortgeschrittene
  4. »
  5. Objektorientierte Programmierung

Die Objektorientierte Programmierung (OOP) in PHP ist ein mächtiges Werkzeug um euren Programmcode leichter wartbarer zu machen und einfacher wiederverwendbar zu machen. Die erste Nutzung von Objekten habt ihr wahrscheinlich bereits in unserem MySQL Tutorial gehabt, also ihr PHP Data Objects (PDO) verwendet habt.

Das objektorientierte Programmieren ist anfänglich nicht so einfach und viele Bücher führen recht kompliziert in das Thema ein. Wir hoffen euch hier eine einfach verständliche Einführung geben zu können. Umfassende Infos zu OOP in PHP findet ihr im PHP Manual.
Ein Hinweis vorweg: Objektorientierte Programmierung lohnt sich oft erst ab einer gewissen Komplexität eurer Anwendung. Die Grundlagen zu kennen ist dennoch für jeden empfehlenswert.

Inhaltsverzeichnis

  • 1 Einführung
  • 2 Warum Objektorientierte Programmierung?
  • 3 Grundlagen

Einführung

Bei der objektorientierten Programmierung existieren zwei Begriffe, die wichtig sind: Klassen und Objekte. Eine Klasse ist ein abstraktes Konzept für das ihr später Eigenschaften und Methoden definieren könnt. Vergleicht ihr dies mit der realen Welt, so wäre das Konzept eines Stuhls eine Klasse. Stühle haben alle gewisse Ähnlichkeiten, zumeist vier Beine und man kann auf diesen Sitzen. Der konkrete Stuhl in eurer Küche würde dann einem Objekt der Klasse Stuhl entsprechen.
Um dies nun auf PHP zu münzen stellt euch eure registrierten User in eurer Datenbanktabelle vor. Jeder Benutzer eures Systems hat gewisse Eigenschaften, beispielsweise seinen Namen, seine E-Mail-Adresse, sein Passwort usw. Ein konkreter User, z.B. Max Mustermann mit der E-Mail-Adresse [email protected], wäre ein konkretes Objekt eurer Klasse.

Warum Objektorientierte Programmierung?

Der Grund dafür ist ziemlich einfach, auch wenn er sich am Anfang nicht ganz so erschließt. Durch das Abbilden eurer Anwendung in Klassen schafft ihr Struktur und könnt Funktionalitäten kapseln. So werdet ihr nicht in einem heillosen Code-Chaos enden. Bei professionellen Anwendungen wird meistens komplett objektorientiert programmiert.
Stellt euch vor ihr möchtet einen Webshop programmieren. Welche Klassen mit welchen Eigenschaften und Methoden existieren dort? Es werden wahrscheinlich zumindest die folgenden Klassen existieren:
User – Zur Repräsentation eurer Benutzer. Ein Benutzer hat dabei ein Benutzernamen, ein Passwort, eine E-Mail-Adresse usw.
Product – Zur Repräsentation eurer im Shop vorhandenen Produkte. Jedes Produkt hat dabei einen Preis, eine Beschreibung, ggf. ein Produktbild.
Productorder- Ebenfalls werdet ihr Bestellungen benötigen, bei denen ein Benutzer ein oder mehrere Produkte bestellt.
Mittels OOP könnt ihr Funktionen die nur den Benutzer betreffen, z.B. das Ändern seines Passworts, in der Klasse für den Benutzer programmieren. Dieser Code ist dann schön getrennt von allen anderen Code, der Code wird leichter lesbar und wenn Änderungen anfallen sind diese deutlich leichter umsetzbar.

Grundlagen

Nun genug von der Einführung, nachfolgend ein kleines Beispiel um die wichtigsten Konzepte und Begriffe zu veranschaulichen:

<?php
//Definition der Klasse User
class User {
	//Definition der Eigenschaften name, email und password
	public $name;
	public $email;
	public $password;

	//Definition der Methode setEmail
	function setEmail($newEmail) {
		if(filter_var($newEmail, FILTER_VALIDATE_EMAIL) !== false) {
			$this->email = $newEmail;
			return true;
		}
		return false; //Neue E-Mail-Adresse konnte nicht gespeichert werden, da diese ungültig war
	}
}

//Definition von zwei Objekten, Max und Lisa
$max = new User();
$max->name = "Max Mustermann";
$max->setEmail("[email protected]");

$lisa = new User();
$lisa->name = "Lisa Meier";
$lisa->setEmail("[email protected]");

echo "Max hat die E-Mail $max->email und Lisa die E-Mail $lisa->email";
?>

Im obigen Beispiel definieren wir zuerst eine Klasse

1
2
3
4
5
<?php
class EuerKlassenName {
// ...
}
?>

Alles was ihr zwischen die geschweiften Klammern setzt gehört zur Klasse.

Danach haben wir einige Eigenschaften definiert für die User-Klasse, dies geht mittels dem Befehl public, gefolgt vom Namen. Eigenschaften, oder auch Attribute oder Felder genannt, sind dabei nichts anderes als Variablen:

1
2
3
4
5
6
7
<?php
class EuerKlassenName {
public $eigenschaft1;
public $eigenschaft2;
//...
}
?>

Diese Eigenschaften verhalten sich identisch zu Variablen, sprich, dies sind Variablen die sich innerhalb eurer Klasse befinden. In ihnen könnt ihr Werte hinterlegen, beispielsweise für den Namen oder die E-Mail-Adresse.

Nach den Eigenschaften für den Benutzer folgt eine Methode

1
2
3
4
5
6
7
<?php
class EuerKlassenName {
function EuerMethodenName($parmater1, $parameter2, $parameter3) {
// Euer Code der Methode
}
}
?>

Im obigen Code überprüft die Methode setEmail, ob der übergebene Wert $newEmail eine gültige E-Mail-Adresse. Falls die neue E-Mail-Adresse gültig ist, wird intern in der Klasse der Wert der Eigenschaft $email überschrieben. Dies geht mittels $this->email = $neueEmail;.

Um nun Objekte euer User-Klasse zu erzeugen, d.h. um vom abstrakten Konzept nun echte User mit echten Daten zu erzeugen, verwendet ihr den Schlüsselbegriff new. Dieses erzeugte Objekt könnt ihr dann wiederum in Variablen hinterlegen. Im obigen Script werden zwei konkrete User erzeugt, sprich, es werden zwei Objekte erzeugt und in den Variablen $max und $lisa abgespeichert.

Bei diesen Objekten könnt ihr nun auf die Eigenschaften zugreifen, indem ihr z.B. $max->name = "Max Mustermann"; schreibt. Ebenfalls könnt ihr Methoden aufrufen, indem ihr $max->setEmail("[email protected]"); ausführt.

Das Interessante dabei ist hier, dass die Eigenschaften und Methoden für $max und $lisa sich nicht in die Quere kommen. Wenn ihr die E-Mail-Adresse oder den Namen für $max ändert, dann hat dies keinerlei Auswirkung auf das User-Objekt $lisa.

Autor: Nils Reimers
Zurück: Für Fortgeschrittene
Weiter: Referenzierung in OOP

Für Fortgeschrittene

  • Objektorientierte Programmierung
    • Referenzierung in OOP
    • Sichtbarkeit in OOP
    • Methoden und Konstruktoren
    • Statische Methoden und Eigenschaften
    • Vererbung
    • Design Patterns
  • PHP Sicherheit
  • Script-Beispiele
  • Codeschnipsel
  • Stellenmarkt
Mit freundlicher Unterstützung von:
  • Punkt191 Werbeagentur

Hoster – Geringste Ausfallzeit

  1. webgo Ø 0 Min.
  2. netcup Ø 0 Min.
  3. Linevast Ø 3 Min.
  4. All-Inkl.com Ø 3 Min.
  5. checkdomain Ø 5 Min.
  6. dogado Ø 6 Min.
  7. Strato Ø 8 Min.
  8. manitu Ø 9 Min.
  9. 1&1 Ø 10 Min.
  10. DomainFactory Ø 13 Min.
» Mehr erfahren

Impressum | Datenschutz | Auf PHP-Einfach.de werben

© PHP-Einfach.de 2003 - 2025

Cookie-Zustimmung verwalten
Um dir ein optimales Erlebnis zu bieten, verwenden wir Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wenn du diesen Technologien zustimmst, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn du deine Zustimmung nicht erteilst oder zurückziehst, können bestimmte Merkmale und Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Anbieter verwalten Lese mehr über diese Zwecke
Einstellungen ansehen
{title} {title} {title}