У меня есть класс сеанса singlep php, как показано ниже.Как передать массив как ключ к методу __set magic
class Session {
static private $_instance = NULL;
private function __construct()
{
session_start();
}
/**
* Prevents the class from being cloned
* @return NULL
*/
private function __clone() { }
/**
* Returns the singleton instance of this class
* @return Session
*/
public static function getInstance()
{
if (!self::$_instance) {
self::$_instance = new Session();
}
return self::$_instance;
}
public function __get($key) {
if (isset($_SESSION[$key])) {
return $_SESSION[$key];
}
return NULL;
}
public function __set($key, $value)
{
$_SESSION[$key] = $value;
}
public function __isset($key) {
return isset($_SESSION[$key]);
}
public function __unset($key) {
unset($_SESSION[$key]);
}
}
я могу создать объект следующим образом
$session = Session::getInstance();
$session->name = 'some name';
Я также могу получить значение как
echo $session->name;
Проблема в том, что я хочу, чтобы передать массив этого объекта и не работает. например, я хотел установить что-то вроде
$_SESSION['user']['data'] = array('name'=>'some name',"empId"=>'123');
Я пробую вот так.
$session->['user']['data'] = array('name'=>'some name',"empId"=>'123');
но не работает. Не могли бы вы предложить, что не так.
'$ session-> user = array ('data' => array ('name' => 'some name'," empId "=> '123')); ' – Rufinus
@ Rufinus: почему вы не отправили его в качестве ответа? – Gaurav
@Rufinus Что делать, если вы затем попытаетесь установить '$ session-> user = array ('somekey' => array ('data'));' - не будет ли это перезаписывать первые данные? – DaveRandom