Zitat:
Vielleicht sehe ich das ja auch falsch, dann würde ich bitten, mir das zu erklären, so ein Profi bin ich dann auch wieder nicht.
|
Ein wirklicher Profi bin ich auch nicht.
Habe mir aber im laufe der Zeit ein Häufchen fundiertes Halbwissen zugelegt.
Auf diesen konkreten Fall bezogen:
"Auf der Mauer" hat ein Code Strickmuster entwickelt.
Und jetzt bekommt er Probleme mit einer Variablen.
So wie ich das sehe, möchte er diese Variable von Funktion zu Funktion übergeben.
Und das innerhalb eines Request Zyklus.
Sessions sind dafür zuständig, Daten Request übergreifend zu halten.
Das ist hier weder erwünscht, noch nötig.
Zitat:
Für mich klingt das ein bisschen so, als würde man sein Auto nie in den fünften Gang schalten um ihn zu schonen.
|
Für mich klingt das so, als hätte man einen Code Design Fehler begangen.
Vergleichbar: Einen Hammer als Stehlampe missbraucht.
Und jetzt muss ein Nagel in die Wand....
Dann baut man eben einen Kolben aus dem Auto und trommelt damit den Nagel rein.
Also nix gegen den 5ten Gang! Auf der Dosenbahn alle male sinnvoll.
In 30er Zone, auf der Spielstraße, eher nicht.
Also klar, man sollte man im 5ten Gang fahren, wenn denn die Drehzahlen plausibel sind.
Ich weiß, nicht alles was hinkt, ist ein Vergleich ....
Aber: Eine Session hat höchst spezifische Aufgaben.
Und diese sollte man ihr gönnen (und sich darauf beschränken).
Alles andere verstößt gegen das Prinzip der geringsten Verwunderung.
Meiner bescheidenen Ansicht nach ist das Vorhaben, Variablen per Session zwischen Programmteilen eines Requestes zu transportieren, ein dirty Hack, welcher auf Grund eines unzureichenden Code Designs notwendig erscheint.
Dirty Hacks rächen sich (irgendwann).
Man lernt das falsche.
(wer einmal begriffen hat, wie ein Hammer funktioniert, für den sieht alles plötzlich wie ein Nagel aus)
Was keinen Deut besser ist: (also ein falscher Tipp)
Wenn Variablen globalisiert werden müssen, dann sollte man das tun!
Und nicht Sessions dafür missbrauchen, nur um das global Schlüsselwort einzusparen. Weil irgend einer gesagt hat "global ist böse". (und das stimmt, global ist böse)
Ich halte es für viel sinnvoller die Programmstruktur nochmal zu überdenken.
MVC Design Pattern:
In der Regel bekommt die View vom Controller alle nötigen Daten.
Template Engines: (dutzende gibts davon)
Viele bekommen ihre Daten per Array übergeben.
Dann gibts noch das Dependency Injection Design Pattern. Auch dieses mag hier Sinn machen.
Zukunftsaussicht:
Es werden demnächst noch mehr Variablen diesen Weg gehen. Und schon wird ein dirty Hack zum Prinzip verklärt/erhoben.
Vielleicht bin ich auch zu pingelig.....
Aber ich bin selber schon in solche Fallen getappt.....
Und sie haben sich gerächt.