OOP Klassen prüfen/testen

Chaosengel_Gabriel

Erfahrenes Mitglied
Hallo liebe Gemeinde ^^

Die objekorientierte Programmierung ist für uns PHP-Entwickler ja eine sehr interessante und wichtige Sache... Grade ab PHP5!

Daher hab ich mich natürlich auch daran gemacht einige Prozeduren in Klassen auszulagern...

Ich wollte hier nun einen Thread schaffen, in dem man/ich vllt seine Klassen vorstellen kann, um diese auch vor der Implementierung in ein bereits bestehendes, laufendes System nochmal von euch kontrollieren zu lassen und natürlich auch unter dem Aspekt der Sicherheit prüfen zu lassen...

Ich habe die Klassen bereits mit error_reporting(E_ALL | E_STRICT) geprüft und so die angezeigten Fehler behoben...

Mir ist nur bang sie nun so zu verwenden, da ich Logik-Fehler nicht ausschließen kann und diese mein System komplett lahmlegen würden ^^

Meine Frage also:

Würdet ihr euch die Mühe machen meine Klassen nochmal zu kontrollieren, bevor ich sie entgültig nutze?
 
Ich würde auch sagen, das man da drüber schauen kann (ist das Forum auch nicht dafür da?). Sollte es aber zu unübersichtlich sein oder selbst eine minimale Doku (Kommentare) fehlen, dürfte die Anzahl der Reviews sinken.
 
Das eine is eine Datenbank Klasse mir error handling und log creating...
Die andere is nur zur Fehlerprüfung für Registrierungen und so...

Hier mal die Links zu beiden, vllt sind sie ja gut genug, dass ihr sie auch gebrauchen könnte ;) :
MySQL-Klasse: http://gabriel86.ga.funpic.de/testClasses/MySQL.class.phps
Check-Klasse: http://gabriel86.ga.funpic.de/testClasses/Check.class.phps <-Wird noch erweitert

Zu der MySQL-Klasse möchte ich sagen, dass einiges zusammen gesammelt ist ^^

[EDIT]
@ Mairhofer:
Ich glaube kommentiert sind die gut...
Am Ende sind auch jeweils noch Erklärungen zur Verwendung ;)
 
Ja da geb ich dir recht, daran hatte ich nciht gedacht...
Das Logging ist ausschließlich für diese SQL-Klasse gedacht...
Im Bereich PHP-Fehler loggen bastel ich mir noch was...

Exceptions sind nen guter Gedanke...
Einen return an der Stelle würde aber doch wohl auch reichen, um anstatt den Skript total abzubrechen nur das logging auszulösen ohne das es der User merkt xD
 
Ok, hier mal meine Gedanken zur Datenbankklasse:

  • Du baust auf PHP4 auf, nutzt aber weiterhin mysql. Warum nicht die neuen MySQLi Funktionen oder sogar die Klasse?
  • Das gleiche gilt für das Schreiben in die Datei. [phpf]file_put_contents[/phpf] wäre kürzer.
  • Eine Dokumentation im Sinne von phpDocumentor wäre gut, weil du dann nicht nur eine einheitliche Dokumentationsart hast, sondern auch noch einfach eine HTML Doku aufbauen kannst
  • Mir würden wichtige Methoden fehlen in der Datenbankklasse. Zum Beispiel ein schneller Zugriff auf die Anzahl der Datensätze die ausgelesen worden sind bzw. wieviele Datensätze das Query auslesen wird.
  • Wahl zur Möglichkeit von assoziativen oder numerischen Arrays bei der Queryrückgabe
  • Keine Möglichkeit zur automatischen Maskierung von WHERE Klauseln?

Das ist mir so spontan aufgefallen...
 
Tja, da macht man sich mal eben was zu essen und schon werden die Klassen gepostet und alle stürzen sich drauf. Wie du siehst, deine anfängliche Frage, ob sich das jemand anschaut ist wohl eindeutig geklärt.

Da ja nun schon ein paar Antworten vorliegen, kann ich fast nicht mehr viel schreiben.
Werde daher die DB Klasse nicht kommentieren und dafür die Check Klasse.

Hat meiner Meinung nach wenig mit dem angesprochenen PHP5 zu tun, sondern ist eine Funktionssammlung umhüllt von einer PHP4 Klasse.
Es gibt ein paar wirklich kleine handwerkliche Optimierungen, wie ich finde.

So werden in der Klasse bei alle Prüfungen ein trim() benutzt, was ja auch okay sein kann.
Aber irgendwie wird dies zu oft aufgerufen, Beispiel die ChkNick()
PHP:
if(trim($nick)=='')  {...}
elseif(strlen(trim($nick)) < $minlength) {...}
elseif(!preg_match('/^\w+$/', trim($nick))) {...}
ich würde es schöner finden, wenn nur einmal trim() auf $nick angewendet wird und dann die prüfungen
PHP:
$nick = trim($nick);
if($nick == '') {...}
//usw
Was mir noch aufgefallen ist, ist die Verwendung von strlen(). Ich meine mich erinnern zu können, das diese Funktion nicht korrekte Längen wiedergibt bei MultiByte Zeichenketten. Dies würde im schlimmsten Fall deine Längenüberprüfung des Passwortes austricksen.

Und dann doch noch zu den Kommentaren. Ja sie sind vorhanden und in den meisten Fällen gut. phpDoc Tags wären aber besser ;)
Extrem aufgefallen ist mir das bei der Methode chkExist(). Ich habe doch ein wenig gebraucht zu verstehen, was diese Methode nun macht.
Wenn diese Funktion nun ein Formular überprüft (wovon ich ausgehe), wäre es benutzerfreundlicher dem User nicht nur zusagen "Fehlende Eingabe", sondern genau zu sagen, welches Feld er nochmal überprüfen muss.

Und zu deiner Frage im Ursprungsposting:
Die Klassen werden dein System vermutlich nicht lahmlegen.
 
Den Docus und Tuts nach zu urteilen, die Grundlagen für meine Klassen waren, handelt es sich um PHP5...
Will ich aber auch nicht um jeden Preis beschreien, da ich mich erst in OOP einarbeite...
Die beiden Klassen sind meine ersten Versuche ;)

Die Check-Klasse is tatsächlich eigentlich nur ne Toolbox...
Ne entsprechende Toolbox-Klasse für andere Funktionen, die ich häufig benötige plane ich auch noch...

Den Sinn den ich darin sehe ist, dass ich mir damit das includen einer Datei mit den Funktionen spare, da ich dies wiederum an eine Bedingung knüpfen müsste, damit es nicht in jedem Skript verfügbar ist, sondern nur in denen wo sie auch benutzt werden...
Stattdessen möchte ich solche Klassen dafür verwenden und diese mit __autoload() automatisch includieren lassen, wenn ich sie brauche...

Ich danke euch tausendfach für euer Feedback, eure Anregungen, eure Kritik und alles andere ;)
Die SQL-Klasse werd ich noch nen bissl erweitern und das mit den Docs schau ich mir natürlich acuh noch an^^

THX
 
Zuletzt bearbeitet:
Zurück