OOP in PHP - Verständnis des Programmierparadigmas

Noeden

Erfahrenes Mitglied
Hallo Leute,

ich versuche seit knapp einem Monat mich nebenher mit OOP zu beschäftigen, konkret in PHP.

Was mir nicht einleuchtet:

Wenn ich jetzt von einer einfachen Benutzerverwaltung ausgehe mit drei (?) Klassen:

  • Users
  • Database
  • Session

Ich will Benutzer registrieren, einloggen und löschen können, alles in Verbindung mit einer MySQL-Datenbank.

Was sich mir jetzt nicht einleuchtet, dass zwar die Funktionen in Klassen geschrieben werden, wenn ich mir das alles so richtig vorstelle, die "Steuerung" aber dennoch prozedural ist. Zum Beispiel bei dem php-Skript, das entweder ein Loginformular oder Links zur Kontoverwaltung ausgibt.

Ist das so richtig und ich würde dann schon objektorientiert programmieren oder mache ich das falsch?

(Ich mach mir momentan nur Gedanken über das "Design" des Codes und hab noch nichts konkretes. )

DANKE
Ich hoffe ich raff es bald :D
Noeden
 
Hey Noeden,

ich stell mir die OOP immer als Sammlung von Pappkartons vor, mit denen ich Ordnung in meinem Code schaffe. Jeder Pappkarton repräsentiert dabei ein Objekt. Das Objekt "User" ist also ein Karton mit der Aufschrift "User". Da drin liegen die Daten, die ich für den User brauche (z. B. username, passwort, email) und die Werkzeuge, die ich brauche, um mit den Daten zu arbeiten.

Die Werkzeuge sind also die Methoden der OOP und das sind ganz normale Funktionen, also prozedural. Genauso sind die Attribute ja auch ganz normale Daten mit den normalen Datentypen.

Was ist also der große Trick hinter der OOP? Ein Objekt hat immer Methoden und Daten zusammen gekapselt. Daher der Vergleich mit den Pappkartons. Ich muss nicht immer das passende Schrauber-Bit zu meiner Schraube suchen, wenn ich das Regal zusammen bauen will, sondern alle Bauteile und Werkzeuge liegen fertig im Pappkarton*. Außerdem steht auf dem Pappkarton auch immer drauf, wer in verwenden darf (Sichtbarkeit). Daneben bietet die OOP natürlich noch andere Vorteile wie die Vererbung usw.

Hoffe, du hast den Ansatz verstanden ;-)

Viele Grüße,
Frezl


* Achtung, jetzt geht's tief: im Prinzip bietet IKEA einen objektorientierten Ansatz, während ein Schreiner eher einen typisch prozeduralen Ansatz verfolgt ;-)
 
Hallo Leute,

ich versuche seit knapp einem Monat mich nebenher mit OOP zu beschäftigen, konkret in PHP.
Löblich. :D

Was mir nicht einleuchtet:

Wenn ich jetzt von einer einfachen Benutzerverwaltung ausgehe mit drei (?) Klassen:

  • Users
  • Database
  • Session
Ja, ich denke diese 3 Klassen sollten hier reichen.

Ich will Benutzer registrieren, einloggen und löschen können, alles in Verbindung mit einer MySQL-Datenbank.

Was sich mir jetzt nicht einleuchtet, dass zwar die Funktionen in Klassen geschrieben werden, wenn ich mir das alles so richtig vorstelle, die "Steuerung" aber dennoch prozedural ist. Zum Beispiel bei dem php-Skript, das entweder ein Loginformular oder Links zur Kontoverwaltung ausgibt.
Hmm, ich sag mal nein. :)

Die Steuerung kannst Du auch über eine Klasse machen. In dieser Klasse kannst Du die anderen Klassen registrieren und mit ihnen in dieser Klasse arbeiten.

Man kann die Steuerung auch prozedural machen, aber das geht ja an dem gedanken von OOP vorbei (oder?).

Btw, in Klassen nennt man die Funktionen => Methoden.

Ist das so richtig und ich würde dann schon objektorientiert programmieren oder mache ich das falsch?
Ich würde mal sagen, wenn man anfängt mit Klassen zu arbeiten, dann fängt man auch an objektorientiert zu arbeiten.

Hier mal noch ein paar Links zum Thema:
  1. php.net - OOP / Klassen
  2. MVC Entwurfsmuster
  3. Registry Entwurfsmuster
  4. kleine Übersicht zu Entwurfsmustern

Gruß
 
Zuletzt bearbeitet:
Zurück