Sven Rautenberg: Request Handling

Beitrag lesen

Moin!

Das Problem ist aber das bisher die Requests in den Konstruktoren der Klasse abgefragt werden.

Ich sehe jetzt in dem Beispiel nicht, wo das Problem sein soll.

Bsp:

include('class.settings.php');
$set_settings=new settings();
include('class.db.php'); // Wird nicht initialisiert weil statisch
include('class.utilities.php'); // Wird nicht initialisiert weil statisch
include('class.errorhandling.php'); // Wird nicht initialisiert weil statisch
include('class.contact.php');
$contact=new contact();
include('class.auth.php');
$auth=new auth();

Mit Autoloading sähe der Code so aus:

include('autoloader.php');  
$set_settings=new settings();  
$contact=new contact();  
$auth=new auth();  

Statische Klassen werden auch automatisch geladen, wenn sie gebraucht werden.

Wenn jetzt vom Kontaktformular eine Nachricht abgeschickt wird, steht im action="index.php" und er lädt die Seite neu, die Konstruktoren werden neu geladen und irgendwo steht jetzt drin "if REQUEST kontaktformular RUFE methode XY auf".

Zu diesem Zeitpunkt wird die Klasse, die die Methode anbietet, ja schon als Objekt instanziiert worden sein, alternativ statisch aufgerufen. Ich sehe nicht, was da gegen Autoloading spräche.

D.h. wenn ich sie erst später nachlade, müsste ich das Abfangen der Requests auslagern. Und dafür müsste ich meiner Ansicht nach jetzt in jedem Formular ein hidden-input-Feld machen mit dem Inhalt "Name der benötigten Klasse TRENNZEICHEN Name der benötigten Methode".

Vollkommen falsch. DU lädst sie nicht "später" nach, sondern du definierst den Autoload-Mechanismus genau dafür, dass du die Klasse nicht "kurz vorher" vor ihrer ersten Benutzung manuell nachladen mußt.

Das hast du ja als unsicher angemerkt, nachvollziehbar irgendwie. Aber mir fällt keine andere Lösung ein. __autoload läd sie erst nach wenn ich dieses ganze abfangen in die index.php packen würde, dann würde ich zwar beim inkludieren sparen, allerdings nicht an Schleifen(If-Abfragen in dem Fall).

Ich möchte allerdings an beidem sparen.

Ich sehe das Problem nicht. Dein Code muß tun, was zu tun ist. Wenn du eine Abfolge von IF-Tests programmiert hast, um das Ergebnis zu erhalten, dann muss das offenbar so sein. Dieser Teil wird definitiv kein Performance-Problem aufwerfen.

Wenn dir dein Code nicht gefällt, dann wäre eine Runde Refactoring angesagt. Das hat aber nichts mit Autoloading zu tun.

- Sven Rautenberg