OOP mit PHP5

hmm, okay das ist eine erkläreung wie Klassen funktionieren. Das ist mir im großen und ganzen auch durchaus klar.

Jedoch suche ich ein komplettes Script, meinetwegen ein Portal, Gästebuch Newssystem, was auch immer, welches fast nur mit Klassen arbeitet.

Im Prinzip suche ich etwas das eine Haupklasse hat, in dem dann die einzelnen Unterklassen gestartet werden. Irgendwie sowas.

Halt ein Projekt, welches fast komplett mit Klassen arbeitet.

Ein Script welches einen Db klasse z.B. verwendet, habe ich schon geschrieben das ist nicht das Problem. Nur habe ich mal gehört, dass wenn man wirklich OOP macht, dass dann quasie alles nur noch mit Klassen gemacht wird und es keinen Code mehr ohne Klassen gibt. Sowas suche ich halt, da ich mir derzeit nicht vorstellen kann wie sowas aussieht/aussehn könnte.Ich hoffe das ist verständlich.
 
Also diese Datenbankklasse ist echt alles andere als ein gutes Beispiel. Der Quelltext ist furchtbar formatiert - hält nicht einmal so etwas ordinäres wie den Syntax-Standard ein. Außerdem halte ich es schon für sehr wenig mitgedacht mysql_fetch_array zu verwenden hier wäre wirklich mysql_fetch_object angebracht. Obwohl beides eigentlich eher Geschmacksache ist.

Mit OOP in PHP5 hat die Klasse aber nicht das Geringste zu tun.

Soviel zu "ein bisschen suchen hätt schon gereicht".

Dieser Beitrag ist in den Google-Suchergebnissen nach "OOP in PHP5" ganz oben dabei. Sehr enttäuschend. Vielleicht kann hier doch noch jemand ein paar gute Quellen nennen für Leute die wie ich hier stranden.

Und dem/der Herrn/Frau bled rate ich Beiträge mit ein bisschen mehr Hirn zu lesen, die Antwort is absolut unbrauchbar.
 
Mit einem komplett OOP-basierten Projekt kann ich nicht dienen, aber mit ein paar Klassen, welche zufaellig auch das PHP5-OOP nutzen (wenngleich ich auch Backports zu PHP4 erstellt habe). Ein paar der Klassen gibt es hier auch als Tutorials.
All meine Klassen sind unter http://php-classes.sourceforge.net zu finden.
Folgende Klassen hab ich auch hier als Tutorials hinterlegt (wobei nicht zwingend die jeweils aktuellste Version hier verfuegbar sein muss):

Ein Projekt vollstaendig OOP-basiert ist meiner Meinung nach auch Overkill. Es gibt einfach Sachen wo eine simple Funktion einfacher und schneller ist als extra ein Objekt zu instanziieren.
Meine Website arbeitet auch relativ viel mit Klassen, und es wird auch immer mehr; als naechstes steht an meine Klasse SQLSession einzubinden um die Session-Verwaltung in ein Objekt und in die Datenbank zu verfrachten.
Dennoch habe ich eine functions.php die eine Anzahl sinnvoller Funktionen enthaelt die mir das Leben einfacher machen.
 
Gänzlich Klassen is indem Sinn nicht wirklich sinnvoll, da gib ich recht, weil das Verwenden der Klassen "im freien Raum" praktisch is, nur für die Verwendung wieder Klassen zu schaffen, halte ich für hinderlich.

Was OOP5 ausmacht sind vor allem die eingeführten public, private und protected Sachen und die erweiterten Möglichkeiten die diese (angeblich) auftun. Ich persönlich werd auch nie __constructor verwenden, weil ichs hässlich find, und Destruktoren find ich total überflüssig. Und das meine Methoden alle public sind hat mir bisher auch nie geschadet. Ich such irgendwie den Sinn in diesen "Neuerungen".

PS: Eine deiner Klassen kannich gut für eines meiner Projekte brauchen http://sentaqor.berlios.de/ - wie man manchmal auf der Suche nach etwas so schnell ganz was Anderes kriegt, dass man braucht ;-)
 
Was OOP5 ausmacht sind vor allem die eingeführten public, private und protected Sachen und die erweiterten Möglichkeiten die diese (angeblich) auftun.
Auch zu den Unterschieden von OOP in PHP4 und PHP5 hab ich ein kleines Tutorial geschrieben. ;) Das geht aber hauptsaechlich in die Richtung Backporting von PHP5-Klassen nach PHP4.

Ich persönlich werd auch nie __constructor verwenden, weil ichs hässlich find, und Destruktoren find ich total überflüssig.
__construct() und __destruct() find ich eigentlich garnicht so schlimm. Vor allem weiss man gleich womit man zu tun hat. ;)
Der Destruktor kann manchmal recht sinnvoll sein.
Meine FTP-Klasse verbindet zum Server im Konstruktor und schliesst die Verbindung im Destruktor. Aehnlich sieht es mit meiner SQL-Klasse aus.
Im Destruktor kann man eben noch letzte Massnahmen ergreifen um alles sinnvoll zu beenden. Dies muss man dann eben bei der Programmierung nicht mehr machen weil es Teil der Klasse ist, was meiner Meinung nach sinnvoll ist, denn die Verwaltung der Verbindung zum Server (ob nun FTP oder SQL ist dabei ja egal) ist Aufgabe der Klasse.

Und das meine Methoden alle public sind hat mir bisher auch nie geschadet. Ich such irgendwie den Sinn in diesen "Neuerungen".
Sicherlich schadet es nicht, vor allem wenn Du der alleinige Nutzer bist. Ich setze aber gern Methoden auf privat die von aussen nicht genutzt werden sollen/brauchen um eben gleich zu signalisieren dass diese nur fuer den internen Ablauf von Bedeutung ist.

PS: Eine deiner Klassen kannich gut für eines meiner Projekte brauchen http://sentaqor.berlios.de/ - wie man manchmal auf der Suche nach etwas so schnell ganz was Anderes kriegt, dass man braucht ;-)
Und welche waere das? ;)
 
War falscher Alarm, dachte die RSS Klasse wäre zum auswerten von Feeds, da sind aber nur drei Methoden drin zum Feed erstellen. Habich schneller reagiert als gelesen :)

Hm ja sinvoll beenden, bei einer Datenbank macht das sicher Sinn.

Hab übrigens eine Erklärung gefunden die scheinbar alles enthält: http://www.dynamicwebpages.de/php/language.oop5.php
Gerade bei den komplizierteren Sachen is sie aber zu dünn - wie alles was ich in Bezug zu Interfaces, abstrakten Klassen, Überladung und Iteration find.

Aber diese Doku zeigt mal auf wieviel da wirklich neu is - puh!
 
Das sieht mir aus wie der Originaltext aus dem PHP-Manual auf php.net. ;)
Das Manual find ich uebrigens echt gut. Dort findet man eigentlich alles was man so braucht um mit PHP arbeiten zu koennen.

Ich empfehle aber, bei entsprechenden Kenntnissen der englischen Sprache, das englische Original, denn die deutsche Uebersetzung scheint nicht immer auf dem aktuellsten Stand zu sein.
So gab es (ist mein ich mittlerweile behoben) z.B. Unterschiede bei der Seite zu md5(). Seit PHP5 hat md5() einen zweiten, optionalen Parameter erhalten. In der englischen Version fand man diese Info auch, auf der deutschen Seite hingegen wurde die Existenz dieses Parameter vollkommen verschwiegen.
 
Du das is genau der Grund warum ich nicht wusste, dass das die Standarddoku ist - ich verwend nämlich nur die englische, eben weil ich genau dieselbe Erfahrung gemacht habe: in der deutschsprachigen fehlen manchmal Sachen.

Ich muss zugeben suchen tu ich darin auch sehr selten, ich programmiere PHP seit mittlerweile 5 Jahren und kenn was ich brauch zumeist schon und tipp dann einfach in die Adresszeile sowas wie php.net/preg_split und so. Komm mir jetzt schon ein bisschen dumm vor, dass ich nicht daran gedacht habe mir die DE-Doku in Sachen OOP5 vorzunehmen - aber wie du siehst hat sie ja mich gefunden ;-)
 
Zurück