Dies ist eine Frage ohne wirkliches Problem hinter, nur ein Produkt meines kranken Geistes und treibt die Dinge etwas seltsam :)PHP: Code-Design Dilemma
So zu machen, ich habe diese PHP-Anwendung auf meinem bauen eigener MVC-orientierter Rahmen (ja, ich habe meinen eigenen gemacht, anstatt den bestehenden zu verwenden). Und es wird durch das Buch gemacht, also haben wir Modell (Daten und Datenbankmanipulation), Ansicht (Vorlagen gefüllt mit Daten und Rendering-Ausgabe) und Controller (behandelt Anfragen, erhält geeignete Daten vom Modell, legt Daten in Sicht). Klassisches und langweiliges Szenario mit Request-Routing mit .htaccess-Regeln.
Gestern habe ich einige Änderungen in meinem Code, Bugfixes, paar Verbesserungen, etc. und ich fühlte mich stark drängen, den Code der Controller neu zu ordnen. Sie fühlen sich etwas schwer und aufgebläht an und die Anzahl der Methoden macht es schwierig, durch die Datei und solche Sachen zu navigieren. Ich bin mir sicher, dass jeder weiß, wovon ich rede.
Ich denke darüber nach, meine Controller-Klasse in viele Klassen zu zerlegen, von denen jede nur eine Art von Anfrage wie Login oder Registrierung oder showProfile oder killMe behandelt.
Jetzt Controller-Klasse hat öffentliche Methoden entsprechend Teile von benutzerfreundlichen (oder vielleicht SEO freundlich) URLs und Routing-Klasse ruft richtige Controller und es ist Methode nach URL-Inhalt.
Änderung, über die ich denke, würde ein wenig Routing-Mechanismus in den Aufruf bestimmter Controller und es Execute() -Methode verschieben.
Zum Beispiel für url = "www.example.com/users/login" jetzt sieht es wie folgt aus:
$controller = new url[0]();
$method = url[1];
echo $controller->$method();
und jetzt URL ändern würde zu "www.example.com/login" und Routing-Code würde so aussehen:
$controller = new url[0]();
controller->Execute();
I Teile weggelassen, wo ich Urls analysieren und extrahieren Informationen von ihnen Routing, wie es irrelevant für meine Frage ist.
Welche Vorteile sehe ich in dieser Änderung?
- eine spezielle Klasse pro Anfrage
- kleinere Dateien
- kleinen Code
- einfache Wartung
- begrenzte Bruchgefahr Controller zu arbeiten, wenn das Hinzufügen neue Funktionen (neue Arten von Anfrage) oder Fehler zu beheben
Nachteile?
- möglicherweise viele Klassen
- mögliche Leistung getroffen
- ???
Und meine Frage ist, was denken Sie über diese Idee und macht es überhaupt Sinn. Und natürlich bin ich mehr daran interessiert, warum ich es nicht tun sollte, als warum.Also, wenn Sie können aus irgendwelchen Gründen ein, warum diese schreckliche Idee wäre und Gräuel bitte jetzt sprechen, bevor es zu spät sein wird :)
EDITED Klärung einer Frage:
ich, ob ich frage sollte meinen einzelnen großen Controller brechen, der viele Arten von Anfragen durch seine Methoden in viele kleine Controller behandelt, von denen jeder nur einzelne Art von Anfrage bearbeitet.
Jetzt habe ich Controller-Benutzer, die Anfragen wie "Login", "ShowLoginForm", "registrieren", "aktivieren" usw. behandelt. Refactored Code würde aus separaten Controllern für jede dieser Anfragen bestehen.
Fragen Sie, ob [FrontController] (http://martinfowler.com/eaaCatalog/frontController.html) [Transaktionsskripten] (http://martinfowler.com/eaaCatalog/transactionScript.html) oder Methoden in aufrufen sollte a [PageController] (http://martinfowler.com/eaaCatalog/pageController.html) oder etwas anderes? Ich verstehe nicht ganz, wonach genau du suchst. – Gordon
Ich habe eine Erklärung hinzugefügt, worüber ich frage :) – grapkulec