Я использую магический класс getter/setter для переменных сеанса, но я не вижу разницы между обычными сеттерами и геттерами.Разница между нормальными и магическими сеттерами и геттерами
Код:
class session
{
public function __set($name, $value)
{
$_SESSION[$name] = $value;
}
public function __unset($name)
{
unset($_SESSION[$name]);
}
public function __get($name)
{
if(isset($_SESSION[$name]))
{
return $_SESSION[$name];
}
}
}
Теперь первая вещь, которую я заметил, что я должен назвать $session->_unset('var_name')
удалить переменную, ничего «магического» об этом.
Во-вторых, когда я пытаюсь использовать $session->some_var
, это не сработает. Я могу получить только переменную сеанса, используя $_SESSION['some_var']
.
Я просмотрел руководство по PHP, но функции выглядят так же, как и мои.
Я делаю что-то неправильно, или нет ничего волшебного в этих функциях.
О да, теперь набор и прием работают. Я ссылался на неверные переменные для моего теста. +1 И спасибо за правильный синтаксис метода unset. Будет ли этот синтаксис: unset ($ session-> var_name); не работает, если нет волшебства? –
@Saif Нет, это не так. Если вы хотите использовать 'unset', вы должны определить функцию' __unset'. – Yacoby
По крайней мере, это не повлияет на _SESSION без этого метода __unset(). – VolkerK