Diskussion:Websiteentwicklung: PHP: OOP

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Buchcharakter[Bearbeiten]

Hier ein Vorschlag, wie eine Einführung in OOP aussehen könnte. Ich weiß nicht, ob das hier einen Buchcharakter trifft (wohl eher nicht); denke aber, es ist so verständlicher als irgendwelchen Formalie aufzulisten.

Was zu tun ist: Vererbung Relevante Unterschiede PHP 4 / 5

Doch, das ist schon Lehrbuchstiel. Zumindest von denen, die ich kenne. -- Daniel B 11:59, 3. Apr 2005 (UTC)

To-Do-List[Bearbeiten]

1.) Vorteile von Klassen:

  • Mehrfache instansen mit new erstellen
  • Code-kann in verschiedenen Programmen verwendet werden (z.B. HTML-Menü-Klasse)
  • Plug-In möglichkeit (z.B. verschiedene Klassen für verschiedene Datenbak verbindungen können einfach ausgetauscht werden -> und das Prog funkt mit ner anderen Datenbank)

2.) Funktionen:

  • Destruktor mit register_shutdown_function()
  • Überladen von Klassen mit extends
  • Klassen als Referenz - mit &


Gruß Thomas

Der Konstruktor[Bearbeiten]

Im Kode von "Der Konstruktor" wird nicht erklärt, welcher Kode zum Konstruktor gehört und was er macht.

Wird hier noch in PHP4 geschrieben?
"In PHP5 heißt sie phantasievoll __construct(), in PHP4 wird einfach der Name der Klasse dazu verwendet. "

--Kato-cha 15:59, 7. Apr. 2009 (CEST)

Gute Gründe[Bearbeiten]

"[...] aber es gibt gute Gründe, sogenannte Setter- und Getter-Methoden zu implementieren." -- Ich glaub euch das ja gerne, aber welche guten Gründe sind das denn genau? --Wolle212 15:11, 31. Mär. 2010 (CEST)

Ich weiß nicht, wer das wann geschrieben hat und was er im Kapitel "Eigenschaften" dazu sagen wollte. (Im Moment steht dort überhaupt nichts dazu.) Deshalb kann ich es nur aus meiner Sicht (C# für .NET) beschreiben:
  • Wenn Get und Set ausdrücklich benutzt werden, können die Zugriffsrechte zwischen Lesen und Schreiben unterschieden werden.
  • Vor allem beim Set können Prüfungen auf gültige Werte eingebaut werden (nur positive Zahlen, nur Zahlen in einem bestimmten Bereich, kein leerer String usw.).
Aber ich kann deine Verwunderung nachvollziehen: Solche Bemerkungen schreien nach mindestens einem guten Grund. -- Jürgen 15:20, 31. Mär. 2010 (CEST)
Bei der Weiterführung des Abschnittes habe ich das einfach mal so stehen lassen, weil es mir durchaus sinnvoll erscheint. Zwei Gründe stehen im roten Kasten bei Sichtbarkeit; habe da jetzt noch einen dritten eingefügt (Schnittstellen). Ich hoffe, dass die Begründungen sinnvoll und nachvollziehbar sind :)
Oder würde vielleicht ein Link auf w:Datenkapselung_(Programmierung) oder w:Zugriffsfunktion helfen? --Misericordia 18:19, 3. Apr. 2010 (CEST)

Lohnen sich Klassen in PHP?[Bearbeiten]

Um beim Beispiel Baum und Held zu bleiben; Der Baum (Bar) hat eine Höhe, einen Typ und ob er am Leben ist, dies lässt sich doch auch in einen Integer(32) speichern: 0-255m Höhe, 128 Bauarten und 1 Bit (True oder False) Lebendigkeit. Somit könnten Funktionen mit diesem Wert arbeiten. Dies würde heißen die Funktion erhält nur 4 Byte an Daten. Wenn die Funktion auch noch als einzelne Funktion in einer Datei deklariert ist müsste nur die Funktion plus 4 Byte in den Arbeitsspeicher geladen werden. Falls eine Klasse (Objekt) verwendet würde, würden alle Funktionen und Eigenschaften des Objekts in den Arbeitsspeicher geladen. Oder wird das in PHP anders gehandhabt? Was spricht für Klassen? (Sorry habe keinen Account und kann dank SUN-Deadkeys kein Tilden schreiben und somit nicht signieren.)

OOP hat vor allem semantische Vorteile (Abbildung realer Objekte, z.B. der Benutzer oder eine Bestellung) und erhöht die Wartbarkeit des Codes. Was ist, wenn der Baum noch eine 129. Bauart kennt? Du müsstest die Struktur deines Integers allen Funktionen, die diesen Baum verwenden, mitteilen, also diese anpassen (könnte mich allerdings auch irren, von bitweisem Auslesen habe ich keine Ahnung). Klassen hingegen werden so geschrieben, dass man über die interne Speicherung der Daten nicht Bescheid wissen muss. Das kann ein solcher Integer sein, eine .ini-Datei oder eine Datenbank; Die Methode Baum::wie_hoch_bist_du() wird stets den gleichen Satz ausgeben.
Es stimmt, die ganze Klasse lädt der Interpreter in den Arbeitsspeicher. Aber Arbeitsspeicher ist beim zustandslosen HTTP eher unwichtig (nach Skriptausführung sind die Ressourcen wieder frei) und PHP in solchen Dingen sowieso nicht die effektivste Sprache. --Misericordia 15:19, 14. Apr. 2010 (CEST)