Tach!
Frage: Wo ist STATIC oder FINAL Methoden und Variablen Sinvoll in einer simplen Webseite mit MVC-Struktur.
static und final haben jeweils ihre eigenen Einsatzgebiete. Man kann sie nicht wirklich gemeinsam auf Sinnhaftigkeit untersuchen.
In Komplexen Strukturen kann ich mir das gut vorstellen aber in einer einfachen MVC-Architektur nicht.
Es ist auch nicht sinnvoll, die Komplexität einer Anwendung als Kriterium für ihren Einsatz heranzuziehen.
Wahrscheinlich habe ich den Zweck der beiden classen funktionen - heißt das so? - nicht richtig verstanden, kenne aber ihre funktionsweise.
Es sind Schlüsselwörter. Die haben zwar eine Funktion (Aufgabe) im Bereich von Klassen, aber unter einer Klassen-Funktion versteht man eher eine Methode, also eine zu einer Klasse gehörenden Funktion (Unterprogramm). Um zwischen Funktion (Aufgabe) und Funktion (Unterprogramm) zu unterscheiden, nehme ich für ersteres lieber das Wort Funktionalität. Ich würde aber static und final nicht als Klassenfunktionalität bezeichnen wollen, weil es keine Aufgaben von Klassen sind, sondern Dinge in Klassen beeinflussen. Sie werden deshalb als Modifizierer (modifier) bezeichnet. Es ist aber in der Praxis nicht besonders wichtig, diesen Begriff zu kennen. Du kannst immer sagen: "Die Klasse/Methode/Eigenschaft ist (als) public/private/final/static (gekennzeichnet)", und jeder wird dich verstehen (im Englischen: "... is marked as ...").
Der Zweck von static ist, Methoden und Eigenschaften zu Klassen hinzuzufügen, die man verwenden kann, ohne Instanzen der Klassen erstellen zu müssen. Eine bedeutende Eigenschaft von static properties ist, dass sie sozusagen Singletons sind. Weil sie an die Klasse gebunden sind, bleiben sie stets bei dieser und werden auch nicht beim Instantieren von Objekten dieser Klasse vervielfältigt. Ob der Einsatz eines Singleton an sich sinnvoll ist oder nicht, steht auf einem anderen Blatt.
Eine typische Anwendung von statischen Methoden ist die Math-Klasse, wie sie anderenorts zu finden ist. In PHP sind die Mathematik-Funktionen in "normalen" Funktionen zu finden.
final hat in PHP keinen besonders gesteigerten Sinn. Es zeigt mehr oder weniger nur dem Verwender an, dass man diese Klasse nicht beerben soll oder eine damit gekennzeichnete Methode nicht überschreiben soll. Da PHP meist als Code vorliegt, könnte man das Schlüsselwort auch einfach entfernen und es dann trotzdem tun. Damit ist sein Nutzen ziemlich begrenzt. Lediglich bei nicht als Code gelieferten Dingen (in PHP eingebaute Klassen und verschlüsselter Code von kommerziellen Anbietern) ist das final nicht entfernbar. Und wenn man sich dafür entscheidet, fremden Code unverändert einzubinden, um die Updatefähigkeit nicht zu gefährden. Es gibt auch das Decorator-Pattern, um die Funktionalität anzupassen, ohne dass man erben muss, und dann kann man auch um das final drumherumarbeiten.
Nochmal meine Empfehlung aus dem anderen Thread: Schau dir die anderen Frameworks an, da findest du Beispiele auch für den Einsatz von static und vielleicht auch final. Oder aber du findest nichts oder nicht viel, weil ihr Einsatz als nicht sinnvoll oder gar störend erachtet wurde. Schau eher, wie andere bestimmte Probleme lösen, und weniger nach Einsatzgebieten für bestimmte Konstrukte. Denn das ist, was du in der Praxis machst: Lösungen für Aufgabenstellungen erarbeiten und nicht Einsatzgebiete für Code-Konstrukte und Programmiermuster suchen.
dedlfix.