Beste Weg, um Sitzungen mit MVC und OO-PHP
Ich arbeite mit sessions, MVC design und der objektorientierten PHP. Wo muss ich das speichern oder abrufen von Daten aus einer session? Ich möchte, um es aus innerhalb von Methoden, so dass ich nicht haben, um die Daten übergeben, die Methoden. Was ist die beste Praxis?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich in der Regel legen Sie diese in den controller. Es macht einfach Sinn.. Der controller entscheidet, was passiert und warum lassen Sie es nicht zu entscheiden, ob die Menschen dürfen zu tun, die angeforderten Aktionen.
In der Regel haben Sie mehrere Controller in einem MVC-system. ZB. BaseController (Abstrakt - Allgemeine), NonSessionController extends BaseController (z.B.: für statische Seiten), SessionController extends BaseController (primär-session-übergabe hier - das könnte abstract). Wenn Sie zum Beispiel verschiedene Benutzer-Typen, möchten Sie vielleicht, um polymorphe dieser controller, wie zum Beispiel: AdminController, UserController, Etc.
Ich persönlich bin ein großer fan der Zend_Session wrapper-Klasse. Ich bevorzuge die Arbeit mit Daten in einer Objekt-orientierten Stil und die Verwendung von Namensräumen Vorteil der Verwendung einer wrapper ist ein großes plus.
Welche dieser sieht Sie besser aus?
oder
Ich bevorzuge das Aussehen, dass die Verwendung der Zugriffsfunktionen gibt Sie.
Hinweis: In einer MVC-system, egal welche Methode Sie wählen, Sie sollten immer und zu setzen session-Daten in Ihrer Steuerung.
Ich habe versucht, es ein paar Möglichkeiten, einschließlich über eine statische wrapper-Klasse zu behandeln, aber ich komme immer wieder nur mit den superglobalen Arrays von selbst. Ich benutze immer noch ein wrapper für die Authentifizierung überprüft, und andere sich wiederholende Aufgaben, aber letztendlich ist es nur einfacher und weniger kompliziert für mich, den stock setup.
Ich denke, es ist hängt der Umfang der denen die retrived Daten verwendet werden, wenn es nur innerhalb einer Methode dann, warum sollten Sie ermittelt werden, es draußen, und die Sitzung ist immer im superglobalen Variablen ist es besser zu lokalisieren, es nur bei Bedarf.
Ich würde nicht die Mühe mit session-Wrapper. Sie nicht gewinnen genug, um Verdienst die Grenzen. Sie gehen durch die superglobale ermöglicht die Verwendung jeder Art von (hoffentlich gesund) Daten-Struktur, die Sie möchten. Meine session-Daten immer am Ende 2 oder mehr Ebenen von array-Daten, das ist zu mühsam, Sie zu verwalten, durch eine session-wrapper.
Die superglobalen nicht selbst begrenzen, so dass Sie speichern Sie Ihre PHP-session-Daten in einer Datenbank, die eine save-handler, was ganz nett ist für Skalierbarkeit.