.| Autor | Beitrag |
|---|---|
|
000 30.06.2007, 19:56 cleric |
Ein wunderschönen guten Abend! Ich arbeite momentan zum lernen an einem login-System für eine Website. Mein Problem hängt mit dem speichern eines Objektes in $_SESSION und get_class_vars() zusammen. Also, ich habe eine Klasse user in der der Username gespeichert wird:
Testen kann man es ganz einfach: Nun wird die Klasse user aber irgendwann mehr als nur den Namen enthalten, da könnten noch dutzende andere Variablen hinzukommen.
Wenn ich keinen Initialisierungsnamen angebe (also <? class user{ private $str_user; ... ) gibt get_class_vars('user'); ein leeres array zurück. Weiss jemand wie das kommt, dass in _sleep() bei "return array('str_user');" der Wert des Objektes serialisiert wird, aber bei "return get_class_vars('user');" der Wert der Klasse serialisiert wird ? --Der Optimist glaubt, dass wir in der Besten aller Welten leben. ehemals epidemic. |
|
Profil || Suche |
|
001 30.06.2007, 20:25 K-Putt |
Versuchs mal mit serialize(&$user); am Ende der Session. Hab jetzt ne weile recherchiert, scheinbar arbeiten die __sleep und __wakeup Methoden nicht mit der Originalen Instanz deiner Klasse, sondern mit einer Kopie. Zu dem Thema findet man auch auf php.net ein paar Infos. Es ist allerdings eh unsauber, wenn du pauschal alle Variablen deiner Klasse bei _sleep zurück gibst. Am besten erstellst du ein Array alá $userData in deiner Klasse, und gibst dieses bei __sleep zurück. Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database Dieser Beitrag wurde am 30.06.2007 um 20:25 von K-Putt bearbeitet. |
|
Profil || Suche |
|
002 01.07.2007, 12:26 cleric |
Guten morgen! Ich habe jetzt ne ganze Menge durchprobiert und _vermute_ dass serialize() von __sleep ein array in der Form: Die Funktion get_class_vars() gibt nun aber nicht das oben abgebildete array zurück, sondern nimmt den Variablennamen als Schlüssel und den Variablenwert als Wert im array, also so ein array: Lösung für mein Problem: Nur dass ich die Variablen nicht selber in das array werfe, sondern das array der Funktion get_class_vars() benutze, von dem ich die Schlüssel nehme und als Werte in das zweite array ummünze. Dabei kann ich dann sogar noch, wie von dir angesprochen, die ein oder andere Variable rausnehmen (ist aber in meinem Fall nur eine Referenz zu einem mySQLVerbindungs-Objekt). [edit] Der Optimist glaubt, dass wir in der Besten aller Welten leben. ehemals epidemic. Dieser Beitrag wurde am 01.07.2007 um 12:37 von cleric bearbeitet. |
|
Profil || Suche |
|
003 01.07.2007, 17:54 K-Putt |
...um das ganze noch mal sachlich zu beschreiben: get_class_vars liefert ein assoziatives Array zurück, mit dem serialize scheinbar nicht klarkommt. Eigentlich müsste serialize mit beiden Arten klarkommen, weil der Schlüssel doch komplett egal ist, in dem Fall. Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database |
|
Profil || Suche |
|
004 01.07.2007, 17:58 oxff |
Mach's doch direkt sauber in Python. --mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik |
|
Profil || Suche |
|
005 01.07.2007, 18:00 K-Putt |
Ja ne ist klar, auf so nen Kommentar hab ich gewartet. Troll dich! --Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database |
|
Profil || Suche |
|
006 01.07.2007, 18:29 hausi |
array_values und array_keys machen aus deinem asso-array ein normales. -- |
|
Profil || Suche |

