Методы PHP Magic не работают с расширенным классом

У меня проблема. Как показано, я создал абстрактный класс с магическими методами, которые будут использоваться в моих классах. Когда я пытаюсь использовать класс Pratica (расширение StandardClass) и пытаюсь получить доступ к простому свойству, PHP возвращает эту ошибку: Попытка получить свойство необъекта в /var/www/property/htdocs/pratiche/dettaglio_pratica.inc .php на линии 40.
Проблема в том, что на моем локальном сервере это работает, а на корпоративном сервере — нет. Это проблема конфигурации? или это проблема кода? Сервер компании использует PHP 5.3.3, а в локали я использую PHP 5.3.6.

Кто-нибудь может мне помочь? большое спасибо.
Federico

Вот извлечение кода:

    abstract class standardClass {

protected $data = array();
public function __construct() {

}
public function __set($property, $value) {

$this->data[$property] = $value;

}
public function __get($property) {

if (isset($this->data[$property]) === true && array_key_exists($property, $this->data)) {

return $this->data[$property];

}

}
public function __unset($property) {

unset($this->data[$property]);

}

public function __isset($property) {

return isset($this->data[$property]);
}

}

class Pratica extends StandardClass {

const _NOME_SESSIONE_PRATICA_   = "pratica";

public function __construct($id_pratica) {

$this->load($id_pratica);

}
public static function init($id_pratica = null) {

Session::init();

Session::sessionStart();

if (Session::existVar(self::_NOME_SESSIONE_PRATICA_) == true) {
if (is_string(Session::getVar(self::_NOME_SESSIONE_PRATICA_)) == false) {
return new Pratica($id_pratica);
}
else {
return unserialize(Session::getVar(self::_NOME_SESSIONE_PRATICA_));
}

}

return new Pratica($id_pratica);

}

private function load($id) {

global $db;$sql = <<<EOQ
SELECT *
FROM elenco_pratiche
WHERE id = $id;
EOQ;

$result = $db->sql($sql);

if ($db->righe() > 0) {
$riga = $db->riga($result);

$this->modify($riga);
}
}

public function modify($pratica) {

foreach ($pratica as $key => $value) {
$this->data[$key] = $value;
}
}

public function __destruct() {

Session::addVar(self::_NOME_SESSIONE_PRATICA_, serialize($this));

}
}

class Session {

protected $log;
static public $is_started = false;

static private $auto_start = false;

static private $session_save_path = null;
static private $session_id = null;
static private $session_name = null;

static private $cookie__lifetime = null;
static private $cookie_path = null;
static private $use_cookies = false;
static private $use_only_cookies = false;
static public function init() {

if (ini_get("session.auto_start") == 1) {
self::$auto_start = true;
self::$is_started = true;
}
elseif (session_id() <> "") {
self::$is_started = true;
}

self::$session_save_path = ini_get("session.save_path");

if (ini_get("session.use_cookies") == 1) {
self::$use_cookies = true;
}

if (ini_get("session.use_only_cookies") == 1) {
self::$use_only_cookies = true;
}}
static public function isSessionAutostart() {

return self::$auto_start;

}
static public function isStarted() {

return self::$is_started;

}
static public function sessionStart() {

if (self::$auto_start == false && self::$is_started == false) {

session_start();

self::$session_id = session_id();
self::$session_name = session_name();
self::$is_started = true;

}

}
static public function setSessionId($id) {

session_id($id);
self::$session_id = session_id();

}
static public function getSessionId() {

return(session_id());

}
static public function addVar ($name,$value) {

if (self::$is_started == true) {
$_SESSION[$name] = $value;
}
}
static public function getVar ($name) {

if (self::$is_started == true) {
if (isset($_SESSION[$name]) == true) {
return $_SESSION[$name];
}
else {
return false;
}

}
}
static public function deleteVar($name) {

if (isset($_SESSION[$name]) == true) {
unset($_SESSION[$name]);
}
}

static public function existVar($name) {

$x = isset($_SESSION[$name]);

return isset($_SESSION[$name]);

}
static public function dump($id = null) {

$log = new log();

if (is_null($id) == true) {
foreach ($_SESSION as $key => $value) {
$log->user(basename(__FILE__) . "_SESSION[" . $key . "] = " . $value,"federico");
}
}
else {
$log->user(basename(__FILE__) . "_SESSION[" . $id . "] = " . $_SESSION[$id],"federico");
}

}
static public function closeSession() {

if (self::$is_started == true) {

session_unset();
session_destroy();

self::$is_started = false;

}
}
}

$pratica = Pratica::init($id);

$id_pratica = $pratica->id;

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]