Klassenverwendung
the-FoX
- php
0 Vinzenz Mai0 the-FoX
0 suit0 dedlfix
Hallo zusammen,
ich habe mal ein paar grundsätzliche Fragen zu OOP und Classes in PHP:
PHP wird beim Einsatz für Webseiten ja nur ausgeführt, wenn es über einen URL-Aufruf angetriggert wird und nachdem der Output erzeugt wurde, gehen alle gesetzten Variablen verloren.
Ist dies bei der Verwendung von Klassen und Objekten oebenfalls so oder kann ich anhand der Session auf die erzeugten Objekte zurückgreifen? Ich vermute mal, sie sind danach wieder weg. Ich sehe allgemein den Nutzen von Klassen und daraus erzeugten Objekten beim Wiederverwenden dieser Klassen für das Erzuegen von x-Objekten. Oder sehe ich das falsch?
Demnach denke ich, dass eine Klasse User, um einen User nach einem Login zu verifizieren oder zu registrieren nicht notwendig ist. Auch bei der Aufberietung von Daten aus einer DB scheint es mir überdiminsioniert zu sein. Als Beispiel fällt mir dazu eine Bidlergallerie mit x Bilderne in. Wenn ich jedes Bild in ein Objekt speichere, ist es schöne OOP, jedoch wozu könnte man das gebrauchen? Zur Sortierung oder Aufberietung für die Ausgabe? Dies kann man mittels Sortierkriterien bei SQL-Statements doch ebenfalls erreichen und sicherlich aus PHP-Sicht Resourcensparender, da PHP selbst nicht mit dem Handling von Klassen beschäftigt ist.
Habt ihr ein paar Beispiele, wie Ihr Klassen verwendte und vorallem in welchen Fällen?
Vielen Dank für Anregungen und Infos im Vorraus :)
the-FoX
Hallo,
Auch bei der Aufberietung von Daten aus einer DB scheint es mir überdiminsioniert zu sein. Als Beispiel fällt mir dazu eine Bidlergallerie mit x Bilderne in. Wenn ich jedes Bild in ein Objekt speichere, ist es schöne OOP, jedoch wozu könnte man das gebrauchen?
Bilder sind als Objekte vielleicht nicht so brauchbar, aber Bilderlisten?
Habt ihr ein paar Beispiele, wie Ihr Klassen verwendte und vorallem in welchen Fällen?
Zufallsbild und eine Bildergalerie: </archiv/2008/7/t173821/#m1142154>
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
ich meinte bei Bildern auch Gallerien/Listen. Ok, durch die Verwendung einer Klasse kapsel ich die Funktionen und es ist egal, wo deren Werte her kommen, denn es existieren saubere Schnittstellen.
Aber fürs Sortieren bietet doch SQL ebenfalls saubere Schnittstellen. Die Kapslung der SQL-Abfragen, um unabhängig von der zu verwendenden DB zu sein, ist für mich wiederrum nachvollziehbar.
Gruß,
the-FoX
Habt ihr ein paar Beispiele, wie Ihr Klassen verwendte und vorallem in welchen Fällen?
wie sagte die eav einst? "das böse ist immer und überall"
objekte bzw klassen verwende ich dann, wenn ich etwas wiederverwenden möchte - bei dingen - sinnvoll bei kommentarsystemen, newssystemen usw
wenns um eine einfache ausgabe von informationen geht, die sequentiell bzw prozedural ablaufen, sehe ich keine notwendigkeit, für objekte
besonders beim erstellen von modulen für frameworks (zb typo3-extensions) ist es unumgänglich, objektorientiert zu arbeiten, um zu gewährleisten, dass alles aus einem guss ist - zwar wären hier auch prozeduren möglich, es ist aber äusserst unklug, nicht fertige objekte zu nutzen
beispiele dafür sind zb ein datenbankwrapper, der einfaches sql-statements in sql-statements für ein sepzifisches system übersetzt, welchen man in einem script nicht nur einmal sondern eben mehrmals benötigt
oder eben eine news-script, welches ein newsobjekt zur verfügung stellt, welches mir dann als methoden seinerselbst zb autor, zeit und text liefert, ohne dass ich selbst in irgendwelchen datenbanken herumgraben muss
ob man das jetzt mit einem funktionspool löst oder als objekt erstellt, ist gemachtssache - bei objekten gibts halt den vorteil, dass sie in sich geschlossen das tun, was sie tun sollen und wenn eine andere instanz mit anderen variablen arbeitet, sich gegenseitig nicht stören
echo $begrüßung;
PHP wird beim Einsatz für Webseiten ja nur ausgeführt, wenn es über einen URL-Aufruf angetriggert wird und nachdem der Output erzeugt wurde, gehen alle gesetzten Variablen verloren.
Ist dies bei der Verwendung von Klassen und Objekten oebenfalls so oder kann ich anhand der Session auf die erzeugten Objekte zurückgreifen? Ich vermute mal, sie sind danach wieder weg.
So ist es. Nach Abarbeitung des Requests ist alles weg, was nicht irgendwie persistiert wurde. Und ja, man kann Objekte in einer Session ablegen und von dort aus wiederherstellen. Voraussetzung ist, dass die Klassendefinition vor dem ersten Lesezugriff auf das sessionierte Objekt geladen wurde.
Ich sehe allgemein den Nutzen von Klassen und daraus erzeugten Objekten beim Wiederverwenden dieser Klassen für das Erzuegen von x-Objekten. Oder sehe ich das falsch?
Der Nutzen ist vor allem organisatorischer Natur. Je komplexer ein System wird, desto mehr muss man in eine gute Organisation investieren und da ist die OOP ein Mittel, das zu erreichen.
Demnach denke ich, dass eine Klasse User, um einen User nach einem Login zu verifizieren oder zu registrieren nicht notwendig ist.
Es sagt ja niemand, dass du eierlegende Wollmilchobjekte bzw. für jedes kleine Ding einen objektorientierten Lösungsansatz erstellen sollst. Wenn man beispielsweise unter C# eine Collection bemühen würde, kann man durchaus unter PHP mit einem Array glücklich werden, auch wenn das Projekt objektorientiert geprägt ist.
Dies kann man mittels Sortierkriterien bei SQL-Statements doch ebenfalls erreichen und sicherlich aus PHP-Sicht Resourcensparender, da PHP selbst nicht mit dem Handling von Klassen beschäftigt ist.
So umständlich und Ressourcen fressend handhabt PHP die OOP nun auch wieder nicht, wie du dir das vermutlich gerade vorstellst.
Habt ihr ein paar Beispiele, wie Ihr Klassen verwendte und vorallem in welchen Fällen?
Wann immer es sinnvoll erscheint und der OOP-Ansatz mehr Vorteile als Nachteile im Vergleich zu anderen Lösungen verspricht. Auch der Mischbetrieb ist kein Problem und sogar unumgänglich, liegen doch die meisten PHP-Funktionen in herkömmlicher nicht objektorientierter Form vor.
echo "$verabschiedung $name";