Ошибка PHP: косвенное изменение перегруженного свойства - PullRequest
1 голос
/ 11 февраля 2011

Я пытаюсь создать свой собственный обработчик сеанса для (в настоящее время) хранилища базы данных.При вызове его как обычного ООП, как показано ниже в первом примере, все работает как задумано.Данные хранятся в базе данных без каких-либо проблем.

Однако при объединении их с функцией 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! 

Ответы [ 2 ]

2 голосов
/ 11 февраля 2011

Ошибка «Косвенное изменение перегруженного свойства» хорошо известна в контексте изменения массивов, возвращаемых __get.

Я мог бы поэтому представить, что read должен вернуться по ссылке:

public function &read(...) {
    ...
}

Но, исходя из того факта, что это нигде не упоминается во всем Интернете, я предполагаю, что ошибка кроется в другом месте. Возможно, в каком-то вашем "не связанном" коде.

0 голосов
/ 17 сентября 2012

Перейдите на www.anindya.com , скачайте * php_curl-5.4.3-VC9-x64.zip * в разделе «Исправленные расширения curl:» и замените php_curl.dll в папке ext.

Найдена связанная проблема по: http://forum.wampserver.com/read.php?2,85716,printview,page=1

...