PHP bir singleton dayalı bir nesne seri hale getirmek için açılamıyor

0 Cevap php

Ben kullanıcı kimlik doğrulaması için kullandığınız, Singleton tasarım dayalı, bir nesne var. Nesne bir kullanıcı başına bir nesne olduğundan, ben nesne yürütme sonunda bir oturum değişkeni otomatik olarak depolanan olmak istiyorum. Ancak, nesne seri deneyin, her zaman içten veya dıştan, ben boş bir dize olsun.

Aşağıdaki temel sınıf, eksi alakasız fonksiyonları:

<?php
/**
* The user class is intended to handle information about authenticated users. Information contained in this class is to be stored
* in SESSION['session_user'] as a serialized object.
*/
class User {
 // Reference to the single User instance
 private static $_instance;
 // User levels
 const GUEST = 0;
 const USER = 1;
 const ADMINISTRATOR = 3;
 // Information about the account
 private $_username;
 private $_userid;
 private $_userlevel;
 // Information about the user, for preventing session hijacking
 private $_ipaddress;
 private $_useragent;

 private function __construct() {
  // Set the visitor's information
  // Set the default information
 }

 public static function getUser() {

  // Check if a user object has been created
  if (!isset(self::$_instance)) {
   // Check if the object is stored in the user session
   if (isset($_SESSION['session_user'])) {
    self::$_instance = unserialize($_SESSION['session_user']);
    //unset($_SESSION['session_user']);
    echo 'Unserializing user';
   } else {
    $c = __CLASS__;
    self::$_instance = new $c;
    echo 'Creating new user';
   }
 }
 return self::$_instance;
}

function __wakeup() {
 // First, check that the user agent has not changed
 // Check that the IP has not changed
}

function __destroy() {
 $_SESSION['session_user'] = serialize(self::$_instance);
 echo serialize(self::$_instance);
 print_r($_SESSION);
}
public function __set($index, $value) {
 return NULL;
}
public function __get($index) {
 // Determine which value to return
}
public function authenticate($inUsername, $inPassword) {
 // Authenticate the user
}
}
?>

Ben de dahili olarak, nesne üzerinde seri diyoruz her zaman __ serialize ($ this) kullanarak yöntemi yok ya (self :: $ _instance) seri, ya da dışarıdan serialize ($ user) kullanılarak, ben boş bir dize olsun. Ancak, ben, kimliği doğrulanmış bir kullanıcı hakkında bunun dışında veri alabilirsiniz beri nesne var biliyorum.

0 Cevap