Tach!
hier mal das Skript, aber am Beispiel von Session und Zeitzone, im Sinne das gleiche Problem.
$time = new Time( $cfg, $session ); // Konfiguration $cfg einlesen, $session gebraucht um lokale Zeit-Zone zu setzen. <-- NOTICE-Meldung, dass es nicht existiert.
$session = new Session( $cfg, $db, $output, $time ); // Start der Sitzung
$session->start(); // lokale Zeitzone des Users wird geladen.
$time->configurate(); // $session wird benötigt um lokale Zeit-Zone, Zeitverschiebung zu setzen.
Du hast hier also einen zirkulären Bezug. Die Zeit benötigt eine Session für die Zeitzone, die Session benötigt eine Zeit für ihre Startzeit, die Startzeit braucht aber wieder eine Zeitzone aus der Session ... Diesen Konflikt kannst du auflösen, indem du die Zeit als UTC ablegst und die Zeitzone erst bei der Ausgabe berücksichtigst.
Ansonsten benötigt Time ja keine komplette Session sondern lediglich die Zeitzoneninformation. Also würde ich da auch nur diese eine Information übergeben. Und damit kannst du sie separat ermitteln, wenn du sie in der Session noch nicht verfügbar hast.
dedlfix.