andaris: User Berechtigungen im Framework

Beitrag lesen

Generell kann entweder die Controller-Action selber auf das Userobjekt zugreifen und so Berechtigungen übeprüfen

Eigentlich ist das nicht deren Aufgabe. Wenn man zumindest versucht nach Single Resposibility zu programmieren, dann hat man da schon ein "und" in der Beschreibung der Funktion: "Prüfen der Berechtigung und Ausführen von Wasauchimmer".

Hier würde ich sagen, das kommt drauf an. Generell ist es natürlich sinnvoller, generelle Zugriffsregeln soweit möglich schon vor dem Controller zu überprüfen. Aber es kann auch durchaus sein, dass anhand der Benutzerrollen unterschiedliches "Wasauchimmer" gemacht wird. Aber du hast schon recht, je besser man die beiden Zuständigkeiten aufsplittet desto besser wartbar bleibt die Applikation.

[...] Sehr unhübsch. Man braucht einen Magic-String, um mit dem get() ein Objekt zu holen. In anderen Worten, man braucht einen Wert, um auf bestimmten Code zugreifen zu können. Damit kann man nur schwer Tools verwenden, die den Code analysieren und einem beim Entwicklen helfen können. Das ist aufgrund der Dynamic von PHP (z.B. wenn eine Funktion unterschiedliche Typen zurückgeben kann) sowieso schon eine Herausforderung, aber Magic Strings setzen dem noch die Krone auf. "Find usages" wird unbrauchbar, weil der Analyzer nicht wissen kann, dass der String sich auf Code bezieht.

Richtig, deshalb empfiehlt sich zB bei Symfony die Verwendung von Controllers as Services. Somit sind explizite Dependency Injection und Typehinting für statische Codeanalyse möglich. Aufgrund des notwendigen Overheads und der Tatsache, dass Controller als Bindeglied möglichst schlank sein sollten, ist dieser Ansatz jedoch nicht immer notwendig bzw. sinnvoll.

LG andaris