Я пытаюсь создать свой собственный обработчик сеанса для (в настоящее время) хранилища базы данных.При вызове его как обычного ООП, как показано ниже в первом примере, все работает как задумано.Данные хранятся в базе данных без каких-либо проблем.
Однако при объединении их с функцией session_set_save_handler
, чтобы можно было использовать глобальную переменную $_SESSION
, PHP отправляет бананы как никогда и начинает выводить несколько Notice: Indirect modification of overloaded property
ошибок.
Что я делаю не так, чтобы вызвать эти ужасающие ошибки?
Пример рабочего кода:
class session extends sessionBase {
private $db;
function __construct() {
parent::__construct();
$this->db = database::get()->connection();
}
function write() {
// Query to database
}
}
$session = new session;
session->write(); // Writes to database perfectly
Пример нерабочего кода:
class session extends sessionBase {
private $db;
function __construct() {
parent::__construct();
$this->db = database::get()->connection();
}
function write() {
// Query to database
}
}
$sessions = New session();
session_set_save_handler(
array($sessions,"open"),
array($sessions,"close"),
array($sessions,"read"),
array($sessions,"write"),
array($sessions,"destroy"),
array($sessions,"gc")
);
session_start(); // This is bananas! B-A-N-A-N-A-S!