phpbar.de logo

Mailinglisten-Archive

[php] von Klassen, Fehlermeldungen und dergleichen

[php] von Klassen, Fehlermeldungen und dergleichen

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Fre Mar 3 11:49:09 CET 2006


Hallo Oliver,

Oliver Michalak schrieb:
> Daraufhin habe ich mal die Klasse nicht per include eingebunden
> sondern direkt in den code eingesetzt, die Fragmente sehen nun wie
> folgt aus:
>
> <?
> class bom_tree {
> //...
> }
>
> class bom_tree_admin extends bom_tree {
> // ..
> }
>
> session_start();
> ?>
> <html>
> <?
> if (!isset($_SESSION['tree'])) {
> 	$tree = new bom_tree_admin ();
> 	$_SESSION['tree'] = &$tree;
> }
> else {

und jetzt läßt sich hier, im Gegensatz zu vorher, ein ein neues Objekt der
Klasse bom_tree_admin() erzeugen?


> 	$tree = new bom_tree_admin ();
> 	$tree = &$_SESSION['tree'];
> }
> $tree->init();
> //...
> ?>
>
> Immernoch der gleiche Fehler!
>
>> Ich habe da einen Verdacht, der Dir allerdings nicht gefallen wird. Da
>> Objekte in Sessions ja ein Thema für sich sind, habe ich mal in das
>> Handbuch geguckt:
>>
>>      http://www.php.net/manual/de/language.oop.serialization.php
>>
>> Und dort habe ich auch mal die "User Contributed Notes" gelesen. Es
>> gibt
>> da in PHP4 - in PHP5 scheint es (eventuell) gelöst zu sein - wohl ein
>> Problem mit Referenzen. Wenn ein Objekt in die Session gelegt wird und
>> serialisiert wird, scheinen die Referenzen bei der Serialisierung
>> verloren
>> zu gehen.
>>
>> Die paar Zeilen Code, die Du oben mitgegeben hast, deuten darauf
>> hin, daß
>> Du Referenzen verwendest. Guck mal, ob es daran liegt.
>
> #1 selbst ohne & (also Referenzen) klappt es nicht

Es bezieht sich auch auf Referenzen in dem Objekt. Verwendest Du da mit
Sicherheit keine?


> #2 schalte ich register_globals=on (und greife anders auf die
> Sessionvars zu) geht es (das war ja der Auslöser, sonst
> funktionierten die Scripte gut, nur durch register_globals=off nicht
> mehr)

Hm. Dazu habe ich nur folgende Aussage in der Doku gefunden:

"Die Konfigurationseinstellungen von track_vars und register_globals 
beeinflussen, wie die Session-Variablen gespeichert und wiederhergestellt
werden."

Es gibt da also offensichtlich einen Unterschied. Die Frage ist, wo der
liegt. Dazu habe ich bisher noch nichts gefunden.


> Wie legt ihr denn Objekte in einer Session ab? Gar nicht? 8-()

Ich bin bisher noch nicht in die Verlegenheit gekommen. :-)


Viele Grüße

Lutz


php::bar PHP Wiki   -   Listenarchive