Pardon! Ihr habt ja recht!
Wenn die Session schon an anderer Stelle gestartet wurde, kannte sie ja die 'Customer'-Klasse noch nicht, und der 'customer' bleibt 'incomplete'. Man muss ihn dann erstmal umwandeln. Ich hab das jetzt mal so, in der wellrad index.php,
Code: Select all
if(!is_a($_SESSION['customer'], 'Customer')) { // wenn 'incomplete'
$z_customer = new Customer(); // dann neues 'Customer'-Objekt initialisieren
$customers_data = settype($_SESSION['customer'], 'Array'); // die Daten von $_SESSION['customer'] auslesen
$customers_data = array_slice($_SESSION['customer'], 1);
foreach($customers_data as $key => $value){ // dem neuen Customer-Objekt übergeben
$z_customer ->$key = $value;
}
$_SESSION['customer'] = $z_customer; // und dieses in der Session registrieren
}
gelöst. - Einfach ganz weit oben, direkt hinter die Variablen-Deklarationen setzen.
Um den 'Customer', der im Laufe seiner Geschichte ganz schön abgespeckt hat, wäre es nun nicht schade. Der ist kaum noch mehr als ein Array. Aber es sollte doch prinzipiell möglich sein, 'Objekte' in der $_SESSION abzulegen, oder? Und auch dafür müsste man dann eine gemeinsame Lösung finden. Mein Vorschlag wäre, den session_start() komplett dem Pluginloader zu lassen -
nachdem alle Klassen aller Plugins eingelesen wurden, sonst beißen den (alphabetisch) Letzten die Hunde.
Vielleicht wäre es Zeit für eine kleine virtuelle Entwicklerkonferenz: Namenskonventionen und auch eine Regelung für das Starten von Sessions müssen her. Ich weiss, dass ich auch wie es mir gerade passte die session (neu)gestartet habe - und 'customer' als Variablenname gehört auch verboten. Aber, nun ja, das Problembewußtsein steigt ...
Ich hoffe der kleine Hack ist schon mal ein Pflaster für das akute Problem. Bei mir hat 's geholfen.
Gute Nacht!
Martin