$session = Session :: getInstance($registry);
В сессию хочу передать объект реестра, чтобы вытянуть из него коннект с БД.
Сам класс выглядит так:
class Session {
private $table; //таблица сессий
private $sId;
private $UserId;
private $data;
private $db;
private function __construct() {
$this->table = 'sessions';
$this->sId = '';
$this->UserId = 0;
$this->data = array(); //данные по пользователю
}
static function getInstance(Registry $registry) {
if(!isset($session))
$session = new Session();
$this->db = $registry->get('DB');
if(!$session->getId())
$session->start();
return $session;
}
//удаление записи
function delete($sId) {
return (int)$this->db->query("DELETE FROM `" . $this->table . "` WHERE `id`='" . $sId . "' LIMIT 1") > 0;
}
//другие методы класса, где нужен объект реестра
}
Ругается на вот эту строку - $this->db = $registry->get('DB');
Fatal error: Using $this when not in object context
Как можно обойти?
Спустя 16 минут, 15 секунд (31.08.2012 - 21:34) Placido написал(а):
$this в статических методах не используется. Вместо этого используется self.
self::$db = $registry->get('DB');
Спустя 16 минут, 38 секунд (31.08.2012 - 21:51) Лена написал(а):
Про self как-то забыла.
Продолжает ругаться на эту строку:
Access to undeclared static property: Session::$db in
Продолжает ругаться на эту строку:
Access to undeclared static property: Session::$db in
Спустя 20 минут, 55 секунд (31.08.2012 - 22:12) Placido написал(а):
Ну да. $db тоже должно быть статическим
private static $db;
Спустя 16 минут, 18 секунд (31.08.2012 - 22:28) Лена написал(а):
Спасибо, получилось. я статические методы и свойства редко использую.