Ich meine, es müsste vor erstellen des User Objektes schon geklärt sein, ob es ein Gast ist oder ein registrierter User. Bei einem Seitenaufruf prüfst du zum Beispiel durch eine Sessionvariable, ob ein eingeloggter Benutzer die Seite aufruft. Sollte das der Fall sein, dann erstellst du ein Objekt mit dem Parameter, das hier ein bekannter User erstellt werden soll. Wenn ein Gast die Seite aufruft, dann wird einfach kein Parameter übergeben.
Beispiel
PHP:
if($_SESSION['registered_user'] === TRUE) {
$user = new user(array('id' => $_SESSION['id'], 'name' => $_SESSION['name']));
} ELSE {
$user = new user();
}
// Die Klasse dann umschreiben
class user
{
public $id = null
public $name = null;
protected $isRegisteredUser = FALSE;
function __construct($aUserInfo)
{
if(is_array($aUserInfo)) {
$this->id = $aUserInfo['id'];
$this->name = $aUserInfo['name'];
$this->isRegisteredUser = TRUE;
} ELSE {
$this->isRegisterUser = FALSE;
}
}
}
Sollte der User sich ausloggen (als ein Request auf z.b. logout.php) wird dann die Sessionvariable gelöscht und bei der initalisierung des User Objektes bei einem neuen Request (User drückt F5 im Browser) ist es wieder Gast.
Andersrum, logged sich der User ein (Request auf Login.php) dann wird die Sessionvariable mit den Userdaten gefüllt.
Wie Felix halt sagt, bei jedem Request wird der Status des Users bestimmt.
Ich würde sagen, das es kaum einen Fall gibt, wo sich der Status des Besuchers während der Ausführungszeit des Scriptes ändert. Solltest du durch dein Script durch Prüfungen erkennen, das der User eigentlich ausgelogged sein sollte, dann sollte der Benutzer erstmal darüber informiert werden, zum Beispiel durch eine Ausgabe (Sie wurden ausgelogged) und der User muss dann durch neuaufrufen der Seite einen neuen Request absenden. Da du beim Zwangslogout vorher die Session gekillt haben solltest, wird er aufomatisch wieder Gast sein.
Vielleicht planst du das ganze aber auch in einem anderen Kontext, den auch ich gerade übersehe.
Dann würde ich in der reInit() Methide einfach die Klassenvariablen zurücksetzen.
PHP:
class user
{
const DEFAULT_USER_ID = 0;
const DEFAULT_USER_NAME = 'Guest';
public $id = null;
public $name = null;
//...weitere userbezogene Variablen
function reInit()
{
$this->id = self::DEFAULT_USER_ID;
$this->name = self::DEFAULT_USER_NAME;
//...weitere userbezogene Variablen
}
}
Gruss