Thorsten Steffen: Modulares Programmieren mit PHP

Beitrag lesen

Hio Andreas,

Meine aktuelle Überlegung ist, nun die wesentlichen Funktionien direkt in den scope der Klasse mit get_object_methods zu importieren,
aber so sicher bin ich da nicht.
wieso? Was sind die wesentlichen Funktionen?

hm, deswegen war ich mir wahrscheinlich nicht sicher ;)

ich dachte Du erzeugst eine Instanz für jede neue Fehlermeldung?! Also ich würde jeden Fehler an die Klasse als neue Instanz übergeben, und je nachdem ragieren. Am Ende alle Fehler(Instanzen) ausgeben, loggen...

So wars eigentlich nicht gedacht. Nich für jede einzelne Fehlermeldung, sondern evtl. für verschiedene Arten der Fehlermeldungen. Z.b. Reports und Errors, wobei Reports allgemeine Hinweise enthalten können und Errors nur tatsächliche Fehler. Aber eine Instanz von Error hätte dann eine Liste aller Fehlermeldunge, die ich am Ende ausgeben oder auch in eine Datei schreiben kann.
Für jeden Fehler eine neue Instanz zu Erzeugen find ich nicht so gut, dürfte problematisch bei der Handhabung werden. Wie komme ich dann am Ende an _alle_ Fehlermeldungen ran. Für mich ist _eine_ Instanz Error einfach für alle auftretenden Fehler zuständig und behandelt diese am Ende nach Wunsch, z.b. in eine Datei schreiben.

checkFile() die verwendet dann zum checken entweder checkExcel() oder checkJPG()...
alles innerhalb einer Klasse.

jup, da dürften dynamische Funktionen interesant werden, wobei man bei einer allgemein gültigen Schnittstelle bleiben kann.

if ($fileType = "EXCEL") $checkFile = "checkFile";
if ($fileType = "JPG") $checkFile = "checkJPG";

checkFile("xxx");

So dass Du für jeden Fehler eien eigen Instanz erhälst, so würde ich das machen, habe aber selbst noch kein wirklich gutes Konzept muß ich dazu sagen ;-)

Hatte ich eigentlich nicht vor, s.o.
Eine neue Instanz nur falls ich andere Meldungen haben will.
Mein Konzept ist, das ich eine Instanz erzeuge, bei der ich das Format einstellen, das Ausgabemedium, sowie welche Fehlermeldungen tatsächlich erfasst werden. Meine Klassen ansich geben jeden Fehler den sie erkennen an errorReprting weiter, diese entscheidet nun ob sie den Fehler nimmt oder nicht.
Deswegen auch die Überlegung, Methoden in den Scope der Klasse zu holen. Wenn ich z.b. das Format festlegen will, müsste ich das ja immer über diese Instanz machen. Was ich dann ausserhalb der Klasse nicht nach

$test = &new fileUpload;
$test->enableErrorLogging();
$test->setErrorFormat("%errCode %errMsg %errDesc %ip %datetime");

machen können. Wobei mir das lieber wäre. Da ich ja mit einem fileUpload-Modul arbeite, welches durch errorReporting die möglich bekommen soll, Fehler zu handeln.
Sie muss daher nicht ultraflexibel mit allen Fehlermeldungen umgehen können, sondern es reicht wenn man Fehler erfassen kann und wenn man Reports (also z.b. Upload von xxx.gif erfolgreich) erfassen kann.
Sie soll vielmehr bei Bedarf sich die wichtigstens Funktionen von errorReporting importieren, also erweitert sich das Modul fileUpload durch das Modul errorReporting, wenn die Aufgabenstellung es erfordert, und das nach festdefinierten, auf fileUpload zugeschnittenen Bedürfnissen.

Das würde ich sowieso machen, das wäre ja ein tierischer Overhead wenn man immer alles laden würde, nur wie man das in der Praxis mit PHP sauber macht ist mir nicht nicht wirklich klar. Oder könnte hier "::" helfen, also Methoden nutzen ohne Instanz?

Ich denke teilweise schon.
Wo denn z.B.? Ich bin mir noch nicht mal so sicher wann ich eien Instanz bracueh und wann nicht. Eigentlich brache ich immer eine Instanz, denn ohne kann ich ja kein $this... verwenden, also kann ich nur die Funktion an sich verwenden, oder?

Ja, du hast keinen Zugriff auf irgendwelche Objektvariablen, da es ja keine Instanz gibt. Sofern du aber auf diese nicht angewiesen bist, brauchst du auch keine Instanz. Z.b. um eine "veraltete" error.log-Datei zu löschen über eine Funktion deleteLogfile($filename = ""), müsstest du nicht unbedingt eine Instanz erzeugen.

Mein Kopf raucht bestimmt genauso wie deiner ;)

ich wünsche es Dir nicht ;-)

danke, hat aber nichts geholfen ;)

gl & hf

Thorsten

P.S.

Ich spiele momentan mit der Überlegung eine kleine Seite diesbezüglich aufzubauen. D.h. ob ich mir z.b. die fileUpload-Klasse nehme und diese von Grund auf als eine quasi Workshop vorstelle. D.h. welche Vorüberlegungen hatte ich bis hin zur Realisierung und den damit verbundenen Problemen und das ganze dann mit einem kleinen Diskussionforum unterlege, also einen kleinen interaktives Workshop. Leider ist das nicht mal so von heut auf morgen umzusetzen und zeitlich erstmal nicht drin.