Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
 
 
 

PHP Klassen und Objekte: Einstieg in die objektorientierte Programmierung

Sie befinden sich: Home > Php Tutorial > PHP Klassen und Objekte: Ei...

PHP Klassen und Objekte: Einstieg in die objektorientierte Programmierung


Eintrag am:  12.04.2026
Hits / Besucher:  22
Sprache:  Deutsch
Kategorie:  Fortgeschrittene Tut...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Die objektorientierte Programmierung (OOP) ist in PHP der Standard für moderne Anwendungen. Frameworks wie Laravel, Symfony und viele Bibliotheken setzen vollständig auf Klassen und Objekte. Wer PHP professionell nutzen möchte, kommt an OOP nicht vorbei. In diesem Tutorial lernst du, was Klassen und Objekte sind, wie du sie erstellst und welche grundlegenden Konzepte du kennen musst.

Illustration zum Tutorial: PHP Klassen und Objekte: Einstieg in die objektorientierte Programmierung

Den Anfang macht die Frage, was eine Klasse überhaupt ist und wie sie sich von einem konkreten Objekt unterscheidet.

Was ist eine Klasse in PHP?

Eine Klasse ist ein Bauplan für Objekte. Sie beschreibt, welche Eigenschaften (Daten) und Methoden (Funktionen) ein Objekt besitzt. Man kann sich eine Klasse wie eine Vorlage vorstellen: Die Klasse Auto definiert, dass jedes Auto eine Marke und ein Baujahr hat. Ein konkretes Auto mit der Marke „VW Golf“ und dem Baujahr 2024 ist dann ein Objekt, also eine Instanz dieser Klasse.

Der Unterschied zwischen Klasse und Objekt ist grundlegend: Die Klasse existiert nur einmal als Definition im Code. Objekte können beliebig viele aus derselben Klasse erzeugt werden.

Eine Klasse definieren

Eine Klasse wird mit dem Schlüsselwort class definiert, gefolgt vom Klassennamen und geschweiften Klammern. Innerhalb der Klammer stehen Eigenschaften und Methoden.

Eigenschaften (Properties)

Eigenschaften sind Variablen, die zu einer Klasse gehören. Sie speichern den Zustand eines Objekts. Seit PHP 7.4 können Eigenschaften mit Typdeklarationen versehen werden, was die Codequalität deutlich verbessert. Zu den unterstützten Typen gehören unter anderem string, int, float, bool, array und seit PHP 8.0 auch Union Types wie string|null. Ab PHP 8.4 gibt es zusätzlich Property Hooks, die den Zugriff auf Eigenschaften noch flexibler gestalten.

Methoden

Methoden sind Funktionen innerhalb einer Klasse. Sie definieren das Verhalten eines Objekts. Innerhalb einer Methode wird über das Schlüsselwort $this auf die Eigenschaften und andere Methoden des aktuellen Objekts zugegriffen. Methoden können Parameter entgegennehmen, Rückgabetypen deklarieren und genau wie normale Funktionen arbeiten. Der entscheidende Unterschied ist, dass sie Zugriff auf den internen Zustand des Objekts haben.

<?php

class Auto
{
public string $marke;
public int $baujahr;

public function beschreibung(): string
{
return $this->marke . ' (' . $this->baujahr . ')';
}
}

$meinAuto = new Auto();
$meinAuto->marke = 'VW Golf';
$meinAuto->baujahr = 2024;
echo $meinAuto->beschreibung();
/* Ausgabe: VW Golf (2024) */

Mit dem Schlüsselwort new wird ein neues Objekt aus der Klasse erzeugt. Danach lassen sich die Eigenschaften über den Pfeiloperator (->) setzen und die Methoden aufrufen.

Ein Objekt erstellen

Das Erzeugen eines Objekts aus einer Klasse wird als Instanziierung bezeichnet. Jedes Objekt hat seine eigenen Werte für die Eigenschaften der Klasse.

<?php

$auto1 = new Auto();
$auto1->marke = 'BMW';
$auto1->baujahr = 2022;

$auto2 = new Auto();
$auto2->marke = 'Mercedes';
$auto2->baujahr = 2023;

echo $auto1->beschreibung();
/* Ausgabe: BMW (2022) */

echo $auto2->beschreibung();
/* Ausgabe: Mercedes (2023) */

Die beiden Objekte $auto1 und $auto2 sind voneinander unabhängig. Änderungen an einem Objekt beeinflussen das andere nicht.

Der Konstruktor (__construct)

Der Konstruktor ist eine spezielle Methode, die automatisch aufgerufen wird, wenn ein neues Objekt erzeugt wird. Er dient dazu, Eigenschaften direkt bei der Erstellung zu initialisieren.

Seit PHP 8.0 gibt es die Constructor Promotion, mit der Eigenschaften direkt in der Parameterliste des Konstruktors deklariert werden können. Das spart erheblich Code.

<?php

class Produkt
{
public function __construct(
private string $name,
private float $preis
) {}

public function getPreisFormatiert(): string
{
return number_format($this->preis, 2, ',', '.') . ' EUR';
}
}

$artikel = new Produkt('PHP-Buch', 29.90);
echo $artikel->getPreisFormatiert();
/* Ausgabe: 29,90 EUR */

Durch die Constructor Promotion wird die Eigenschaft deklariert, typisiert und zugewiesen, alles in einer einzigen Zeile. Die Sichtbarkeit (hier private) wird direkt im Parameter angegeben.

Zugriffsmodifikatoren: public, protected, private

Zugriffsmodifikatoren steuern, von wo aus auf Eigenschaften und Methoden zugegriffen werden kann. PHP kennt drei Stufen:

  • public: Zugriff von überall möglich, auch von außerhalb der Klasse.
  • protected: Zugriff nur innerhalb der Klasse selbst und in erbenden Klassen.
  • private: Zugriff ausschließlich innerhalb der Klasse, in der die Eigenschaft oder Methode definiert ist.

Die Wahl des richtigen Modifikators ist ein zentrales Konzept der Kapselung. Eigenschaften sollten in der Regel private oder protected sein, damit sie nicht unkontrolliert von außen verändert werden können. Der Zugriff erfolgt dann über öffentliche Methoden (Getter und Setter).

<?php

class Benutzer
{
public function __construct(
private string $name,
private string $email
) {}

public function getName(): string
{
return $this->name;
}

public function getEmail(): string
{
return $this->email;
}

public function setEmail(string $email): void
{
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new InvalidArgumentException('Ungueltige E-Mail-Adresse');
}
$this->email = $email;
}
}

In diesem Beispiel sind $name und $email als private deklariert. Der direkte Zugriff von außen ist nicht möglich. Stattdessen stellt die Klasse kontrollierte Getter- und Setter-Methoden bereit. Der Setter für die E-Mail-Adresse enthält eine Validierung, die sicherstellt, dass nur gültige Werte gespeichert werden. Ohne Kapselung könnte jeder Teil des Codes die Eigenschaft beliebig ändern, auch mit ungültigen Werten.

Vererbung mit extends

Vererbung ermöglicht es, eine neue Klasse auf Basis einer bestehenden Klasse zu erstellen. Die erbende Klasse (Kindklasse) übernimmt alle Eigenschaften und Methoden der Elternklasse und kann diese erweitern oder überschreiben.

<?php

class Tier
{
public function __construct(
protected string $name
) {}

public function sprechen(): string
{
return $this->name . ' macht ein Geraeusch.';
}
}

class Hund extends Tier
{
public function sprechen(): string
{
return $this->name . ' bellt.';
}
}

$hund = new Hund('Rex');
echo $hund->sprechen();
/* Ausgabe: Rex bellt. */

Die Klasse Hund erbt den Konstruktor von Tier und überschreibt die Methode sprechen(). Der Zugriff auf $this->name ist möglich, weil die Eigenschaft als protected deklariert ist. Wäre sie private, könnte die Kindklasse nicht darauf zugreifen.

Beim Überschreiben einer Methode spricht man von Method Overriding. Die Kindklasse ersetzt die Implementierung der Elternklasse durch eine eigene. Mit dem Schlüsselwort parent:: lässt sich dabei auch die Methode der Elternklasse aufrufen, falls deren Logik zusätzlich ausgeführt werden soll. PHP erlaubt nur einfache Vererbung, das heißt, eine Klasse kann nur von einer einzigen Elternklasse erben. Für die Wiederverwendung von Code über mehrere, nicht verwandte Klassen hinweg stehen Traits zur Verfügung.

Statische Eigenschaften und Methoden

Statische Eigenschaften und Methoden gehören zur Klasse selbst und nicht zu einem einzelnen Objekt. Sie werden mit dem Schlüsselwort static deklariert und über den Doppelpunkt-Operator (::) aufgerufen.

<?php

class Zaehler
{
private static int $anzahl = 0;

public function __construct()
{
self::$anzahl++;
}

public static function getAnzahl(): int
{
return self::$anzahl;
}
}

new Zaehler();
new Zaehler();
echo Zaehler::getAnzahl();
/* Ausgabe: 2 */

Statische Methoden verwenden self:: statt $this->, da sie ohne Instanz arbeiten. Ein typischer Anwendungsfall sind Zähler, Factory-Methoden oder Konfigurationswerte, die klassenweit gelten sollen. Innerhalb einer statischen Methode kann $this nicht verwendet werden, da kein konkretes Objekt existiert. Statische Methoden werden häufig als Hilfsfunktionen oder Factory-Methoden eingesetzt, die neue Objekte auf eine bestimmte Art erzeugen.

Warum Klassen und Objekte verwenden?

Die objektorientierte Programmierung bietet gegenüber prozeduralem Code mehrere Vorteile:

  • Struktur: Code wird in logische Einheiten aufgeteilt. Jede Klasse hat eine klar definierte Aufgabe.
  • Wiederverwendbarkeit: Klassen können in verschiedenen Projekten eingesetzt werden. Vererbung und Komposition ermöglichen es, bestehenden Code zu erweitern, ohne ihn zu duplizieren.
  • Wartbarkeit: Änderungen an einer Klasse betreffen nur diese Klasse, nicht den gesamten Code.
  • Kapselung: Interne Details werden verborgen. Die Klasse bietet nach außen nur die Methoden an, die wirklich benötigt werden.

In prozeduralem Code werden Daten und Funktionen getrennt verwaltet. Das führt bei wachsenden Projekten schnell zu unübersichtlichem Code, weil nicht klar ist, welche Funktionen zu welchen Daten gehören. OOP löst dieses Problem, indem zusammengehörige Daten und Logik in einer Klasse gebündelt werden.

classDiagram
    class Tier {
        #string name
        +sprechen() string
    }
    class Hund {
        +sprechen() string
    }
    class Katze {
        +sprechen() string
    }
    Tier <|-- Hund
    Tier <|-- Katze

Fazit

Klassen und Objekte sind das Fundament der modernen PHP-Entwicklung. Eine Klasse dient als Bauplan, ein Objekt als konkrete Instanz dieses Bauplans. Mit Konstruktoren, Zugriffsmodifikatoren und Vererbung lässt sich Code sauber strukturieren und wiederverwenden. Wer diese Grundlagen beherrscht, hat den Einstieg in die objektorientierte Programmierung geschafft und kann darauf aufbauend Konzepte wie Interfaces, Traits und abstrakte Klassen erlernen.

 


Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.