php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.06.2005, 15:03  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 104
ajo_silent
Standard kann sich ein Objekt selbst serialisieren?

Hallo,

ich arbeite mit einem umfangreichen Objekt, welches auch etliche Variablen besitzt.
Die Informationen sollen bei jeder Nutzeraktion verfügbar sein, also wird vor jedem Formular-Aufbau, das Objekt in einer Session gespeichert.
Dazu habe ich nur einige Variablen des Objekts einzeln gespeichert. Kann ich nicht das ganze Objekt speichern? Oder genauer: kann das Objekt sich selber speichern? Serialisiert werden ja stets nur die Variablen - nicht die Funktionen.
Falls das geht, wie komme ich wieder an das Objekt? Wenn das Skript nach einem Reload wieder aufgerufen wird, sollte das Objekt merken, dass es selber in serialisierter Form in der Session schlummert. Es sollte die Variablen aus der Session holen können und in seine Variablen speichern.
Geht so was überhaupt? Dass ein Objekt sich selbst serialisieren (geht ja beim Sessionspeichern automatisch) und deserialisieren kann? Wenn ja, wie?

Danke

Ajo
ajo_silent ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.06.2005, 15:41  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kurze, ernstgemeinte Frage:
"Ist das nicht der Horror in Sachen Performance, was Du da vorhast?"
imported_Ben ist offline  
Alt 24.06.2005, 15:49  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Wäre n riesiger Aufwand du müsstes jede Eigenschaft des Objekt speichern wobei wir hier schon beim ersten Minuspunkt sind, du müsstes das für jedes Objekt wegen Unterschiedlichen Eigenschaften individueell machen als nächstes müsstes du das in der Session gespeichert Objekt auslesen und wieder in die Eigenschaften speichern auch hierbei wieder für jede Klasse individueell.


Bleibt letztendlich nur noch die Frage des Zwecks?
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline  
Alt 24.06.2005, 15:51  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard Re: kann sich ein Objekt selbst serialisieren?

Zitat:
Zitat von ajo_silent
ich arbeite mit einem umfangreichen Objekt, welches auch etliche Variablen besitzt.
Das ist schonmal falsch.
Zitat:
Zitat von ajo_silent
Die Informationen sollen bei jeder Nutzeraktion verfügbar sein, also wird vor jedem Formular-Aufbau, das Objekt in einer Session gespeichert.
Dann wirds bei starten der Session auch wieder ausgepackt, automatisch.
http://www.php-faq.de/q/q-sessions-objekte.html

Der Beitrag wurde verschoben, wegen...
... Postings im falschen Forum. Bitte beim nächsten Mal darauf achten..
... der Tatsache, dass die PHP-FAQ auch was feines ist.

Bemerkung:
Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.

moved to PHP - Anfänger
__________________
mod = master of disaster
Waq ist offline  
Alt 24.06.2005, 15:52  
Gast
 
Beiträge: n/a
Standard

schau Dir mal http://www.php.net/manual/en/language.oop5.magic.php an
insbesondere __sleep and __wakeup


ausserdem speichert php bei serialize() den Namen einer Klasse mit ab. Wird diese Zeichenektte danach wieder deserialisiert, baut php das Objekt anhand der Klasse, die zu diesem Zeitpunkt den angegebenen Namen trägt, wieder auf

PHP-Code:
<?php /* probier mich aus */
class AKlasse
{
    var 
$aVariable=0;
    
    function 
abc()
    {
            echo 
'abc:'$this->aVariable"\n";
    }
}

class 
BKlasse
{
    var 
$bVariable=1;
    
    function 
BKlasse()
    {
        
$this->bVariable = new AKlasse();
        
$this->bVariable->aVariable 5;
    }
    
    function 
xyz()
    {
            echo 
'xyz:'$this->bVariable->abc();
    }
}

$b = new BKlasse();
$c serialize($b);
unset(
$b);

echo 
$c;
echo 
"\n<hr />\n";

$d unserialize($c);
$d->xyz();
?>
 
Alt 24.06.2005, 15:56  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von VolkerK
die sind zwar schön und gut aber die werden doch nur bei serialize() bzw. unserialize() aufgerufen und müssen trotzdem für jedes Objekt einzeln definiert werden
HStev ist offline  
Alt 24.06.2005, 15:59  
Gast
 
Beiträge: n/a
Standard

Ja, ich habe nur auf "Absenden" statt "Vorschau" geklickt, als ich den link testen wollte.
Jetzt steht da ja noch mehr
 
Alt 25.06.2005, 19:46  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 104
ajo_silent
Standard

hallo an euch PHP-Profis,

ich kann leider erst jetzt antworten. Irgendwie habe ich mehr Entsetzen in euch aufgeworfen als geplant (wer plant das schon ).
Zum Verständnis, was ich machen will, bzw. was schon funktioniert (ich wollte es nur optimieren/vereinfachen).
Ich programmiere einen Produkt-Konfigurator. Das heißt, ein Modul für einen Shop, bei dem man als Kunde eine Konfiguration von vorhandenen Artikeln zusammenstellen kann. Damit man nicht wahllos jeden Artikel mit jedem kombinieren kann, habe ich mittels formaler Grammatiken ein Regelwerk geschaffen (es beschreibt, welche Artikel zusammen passen), welches rekursiv geparst und in eine komplexe Array-Struktur gespeichert wird.
Wenn der Kunde nun eine Konfiguration tätigt, wird in jedem Schritt diese Struktur angepasst. Damit der Konfigurator die Strukur nicht vergisst, muss sie ja dazu bei jedem Neuladen des Formulars in der Session gespeichert werden bzw. wieder dort rausgeholt werden.
So, wie ist das ganze realisiert?
Es gibt eine Klasse. Diese hat folgende Aufgaben/Funktionen:
1. Einlesen der Grammatik
2. Parsen der Grammatik + Fehlerprüfung
3. Durchführen der Konfiguration
Dies geschiet momentan mittels 3 Klassen-Methoden. Das oben erwähnte komplexe Array ist eine Klassen-Variable. Da das Objekt autark arbeitet, wäre es toll, wenn es in der Lage wäre, sich auch selber in der Session zu speichern und sich wieder zu reaktivieren.
Alles wäre ganz leicht, wenn ich die Struktur von außen in die Session speichere. Zum Beispiel durch ein weiteres Objekt, welches NUR die Struktur der Konfiguration enthält. Ich wollte aber halt wissen, ob es möglich ist, dass ein Objekt sich selbst in die Session schreiben kann.

Danke erst mal für das Zu-Ende-Lesen, meiner Beschreibung, die hoffentlich verständlich war.

Gruß

Ajo
ajo_silent ist offline  
Alt 25.06.2005, 19:53  
Gast
 
Beiträge: n/a
Standard

Sofern die Klasse zum Zeitpunkt des Deserialisierens auch bekannt ist, erstellt php wieder ein Objekt dieser Klasse mit den angegebenen Werten. Dafür ist kein weiteres zutun notwendig. Einzige Voraussetzung: Jedes Datum muss sich de-/serialisieren lassen können - das gilt also schonmal nicht für die php-handelsüblichen Datenbankverbindungen.
Welche Arten von Daten werden denn im Objekt gespeichert? "Nur" eine Mischung aus Zeichenkette, Zahlen, Felder und anderen Objekten (die die selben Arten von Daten enthalten) ?
 
Alt 25.06.2005, 19:56  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 104
ajo_silent
Standard

es werden reine Daten in den Variablen gespeichert. Keinde DB-Verbindungen oder Verweise auf andere Sachen. Darunter:
- halt diese mächtige Struktur
- und einige Integer-Werte
Mehr ist es nicht.
ajo_silent ist offline  
 


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
Objekt im GET-Query wird nicht übertragen Ralpho PHP-Fortgeschrittene 10 05.05.2008 10:03
Objekt als ComboBox behandeln Nalincah PHP Tipps 2008 2 08.11.2007 03:52
Klassensammlung über ein Objekt zur Verfügung stellen ecomeback PHP Tipps 2007 7 14.07.2007 00:01
Objekt wird auf einem Server akzptiert auf anderem nicht nieselfriem PHP Tipps 2006 3 10.07.2006 01:46
PHP-Object (klasseninstanz) als Objekt an WS übergeben. joni1980 PHP-Fortgeschrittene 2 10.05.2006 11:25
Zugriff auf verschachteltes Objekt aus Funktion FloMX PHP-Fortgeschrittene 10 28.03.2006 17:01
[Erledigt] OOP: Fehlermeldung bei Wert von Objekt in Abfrage PHP Tipps 2006 8 03.03.2006 15:56
Objekt in Session übergeben jacos PHP Tipps 2006 2 21.02.2006 00:11
[Erledigt] PHP5 OOP Zugriff aus einem Objekt auf ein externes Objekt PHP Tipps 2006 5 28.01.2006 16:05
Objekt übergeben Fatal Error PHP Tipps 2007 5 28.12.2005 14:43
Objekt Verwurschtelung PHP-Fortgeschrittene 1 10.09.2005 13:26
Objekt in Array ablegen PHP-Fortgeschrittene 9 18.08.2005 14:35
[Klassen] Untereintrag für Objekt erzeugen? DannyD PHP Tipps 2005 5 17.02.2005 18:13
Objekt in einer Session suter PHP Tipps 2004-2 2 13.12.2004 17:33
objekt und collection PHP Tipps 2004-2 2 17.11.2004 08:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
objekt soll sich selbst serialisieren, objekt in der session serialisieren, sich selbst serialisieren, object sicht selbst serialisieren lassen, php objekte serialisieren, php objekt selbst serialisieren, klasse \sich selbst serialisieren\, objekt selbst serialisieren, objekt sich selbst speichern, speichern objekte sich selbst, klasse sich selbst serialisieren lassen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:35 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.