php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.04.2006, 11:09  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard Events, Observer, Henne-Ei-Problem

Hallo.

Was habt ihr für Erfahrungen mit Observern in euren Anwendungen? Konkret geht es bei mir darum, das Session-Objekt an verschiedenen Stellen im Code "einzuhängen". Wenn der Benutzer-Status wechselt, wird $Session->regenerateId() aufgerufen, bevor Weiterleitungen (302er) ausgeführt werden, wird $Session->writeClose() aufgerufen.

Das funktioniert natürlich auch und im Moment reicht mir das vollkommen aus. Ich denke nur schonmal weiter, denn meinem Verständnis nach sollten weder die Controller, noch das Session-Objekt ($Session->triggerEvent('beforeExit'); oder so) entscheiden, was alles zu tun ist, bevor eine Weiterleitung gestartet wird.

Das Problem ist nun, dass ich schlecht das Session-Objekt zum Observer des User-Objektes machen kann, da dieses zum Zeitpunkt der initialisierung des Session-Objektes noch garnicht besteht. Beziehungsweise hier könnte man ja zunächst ein leeres User-Objekt bauen, aber das geht mit den Redirects ja nicht, da ich die Session brauche, um überhaupt entscheiden zu können, welcher Controller den Request ausführen soll.

Ich dachte an einen zentralen EventManager, bei dem sich Beobachter für bestimmte Events anmelden können und die dann einfach durch ein EventManager->getInstance()->triggerEvent('auth_state_changed'); oder so benachrichtigt werden.

Aber so ganz sauber finde ich das nicht, denn ich müsste die Events und damt die Abhängigkeiten und Zusammenhänge getrennt dokumentieren.

Hab ihr mir Anregungen dazu?

Basti
Basti ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.04.2006, 09:27  
Benutzer
 
Registriert seit: 29.06.2004
Beiträge: 50
brain_overload
Standard Hmmm...

vielleicht ist der Aufbau deiner Objekt Hierarchie zu überdenken!?

Das "Henne-Ei-Problem" stellt sich nicht, wenn man das User-Objekt und das Session-Objekt auf eine Hierarchie-Ebene stellt, was meiner Meinung für HTTP-Anwendungen korrekt wäre.

Oberhalb dieser beiden Objekten sollte ein Application-Objekt stehen, das die Events/Benachrichtigungen von seinen Child-Objekten verarbeitet.
Mit diesem Prinzip arbeite ich häufig.

Hoffe, Dein Problem richtig verstanden zu haben.
Grüße brain_overload
brain_overload ist offline   Mit Zitat antworten
Alt 30.04.2006, 20:15  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi "brain_overload".

Klar, darum geht es ja gerade, dass die einzelnen Controller nicht direkt auf das Session-Objekt zugreifen (natürlich schon, wo es um das Schreiben und Lesen von Daten geht, aber eben nicht, wo es darum geht, die Anwendung in puncto Session sicher zu machen bzw. Fehlerquellen der Session auszumerzen), sondern dass es eine übergeordnete Instanz gibt, die auf bestimmte Signale entsprechend geagiert.

Nur, wie sieht das praktisch aus?

Den Redirect werd ich eh in den Application Controller legen - damit ist das Problem erledigt. Aber was Änderungen am User-Status angeht, so wäre hier in meinen Augen ein Observer bzw. Event- oder Model-Listener angebracht. Andernfalls müsste der Controller, der die Statusänderung durchführt ja neben der View noch Signale an den ApplicationController zurück durchgeben, dass eben eine solche Änderung stattgefunden hat.

Und da fehlt mir ein gescheiter Ansatz, wie das gut umzusetzen ist.

Basti
Basti ist offline   Mit Zitat antworten
Alt 09.05.2006, 15:53  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Basti,

meiner Ansicht nach ist das ein klassisches FrontController-Thema. Dabei wird die Busines-Schicht vor der Präsentationsschicht aufgebaut und dort bereits die Entscheidung getroffen, was passieren soll. Du kannst zudem eine Art "Runtime" instanzieren (bei mir heißt das Applicationmanager), der bei jedem Request gestartet wird und Listener-Methoden (registerListener(), unregisterListener(), ...) zur Verfügung stellt.


Grüße,
Christian
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Timestamp problem phrain PHP Tipps 2008 2 04.04.2008 09:41
Problem mit CAPTCHA patEwing PHP Tipps 2008 0 11.02.2008 21:57
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
Array Problem [Ansatz ?] PHP Tipps 2005 0 27.01.2005 18:24
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] [gelöst] Anfänger: Datums Format Problem... Datenbanken 10 29.11.2004 21:41
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Cookie / localhost / Problem gelöst PHP-Fortgeschrittene 11 02.11.2004 22:41
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php events, javascript henne ei problem

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:15 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.