Matti Mäkitalo: Gibt es dazu eine DEMO

Beitrag lesen

problematische Seite

Hallo,

deine Klasse ToDo macht viel zu viel und widerspricht daher dem SRP. Funktionen darin umfassen:

  • Tabellen anlegen
  • abfragen des Modells (das Modell ist der array mit dem Namen STASH, nicht die ToDo-Klasse)
  • escapen von Werten (htmlspecialchars in ToDo? Obwohl ToDo gar nichts mit HTML zu tun hat?)
  • Validierung von User-Eingaben (in control(), _validate($date))
  • Ausgabe von human-readable Fehlertexten (ich interpretiere die Aufrufe von dd() zumindest so)
  • Es weiß Bescheid über Parameter ToDo::param und steuert daraufhin seine Funktion. Diesbezüglich hat es Controller-Charakter.
  • Business-Logik, z.B. zum anlegen/schließen von Todos => dies gehört üblicherweise in ein Model.

Man merkt deutlich deinen Einfluss auf das Klassendesign, was sich vom heute üblichen Klassendesign merklich unterscheidet. Ich würde jedem empfehlen, sich dieses Klassendesign nicht anzueignen.

Du schreibst halt gerne große Klassen, welche üblicherweise auch Monolithen sind. Gängige Praxis ist aber, viele und spezialisierte kleinere Klassen zu schreiben. Wesentlicher Vorteil dieser Praxis ist es, dass kleinere Klassen besser testbar sind. Dein Code ist quasi nicht als Unit-Test testbar (streng genommen geht es, aber du kannst es z.B. nicht von einer DB abklemmen).

Für ein modernes MVC-Framework in PHP schau dir Symfony an. Dort gibt es auch einen "Einsteiger-Guide" MVC-Frameworks, den ich gerne empfehle: https://symfony.com/doc/current/introduction/from_flat_php_to_symfony.html

Viele Grüße Matti