Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Сесии


Автор: Jlekc 13.6.2005, 18:04
допустим есть:
Код

<?
class Count{
    var $c = 0;
    function inc(){
        echo 'inc';
        $this->c++;
    }
    function show(){
        echo $this->c;
    }
}

?>

регю сесию, и отрабатываю сорс:
Код

session_start();
if(!session_is_registered('count')){
    $count = new Count();
    session_register('count');
}else{
    $count = $_SESSION['count'];
}

$count->inc();
$count->show();

рефрешу, не пашет(((
вернее в $_SESSION был зареген $count, данные считал, но по новому рефрешу не перезаписал их


есе же сделать указатель:
Код

$count = &$_SESSION['count'];

то какбы все гууд


вроде раньше без указателей работал smile
сижу в пхп.ини но чот ниче не вижу, хелп плз

Автор: Mal Hack 13.6.2005, 18:16
Объект нельзя в сессии регистрировать. Только если с испольщованием serialize();
И вообще код у тебя не совсем верный.
Вот так было бы лучше:
Код
session_start();
if(!issen($_SESSION['count'])){
    $count = new Count();
    $_SESSION['count'] = serialize( $count );
}else{
    $count = unserialize( $_SESSION['count'] );
}
$count->inc();
$count->show();

Добавлено @ 18:16
Цитата(Jlekc @ 13.6.2005, 19:04)
есе же сделать указатель:

Указателей в PHP нет, как таковых. Это - вроде как ссылка.

Автор: Jlekc 13.6.2005, 18:41
Цитата(Mal @ 13.6.2005, 18:16)
Только если с испольщованием serialize();

хмм, а почему работает через
Код

$count = &$_SESSION['count'];

??

Цитата(Mal @ 13.6.2005, 18:16)
Это - вроде как ссылка

Всегда воспренимал ссылку на данные - '='.
А указатель на область памяти данных - '&'.
мож в пхп другии термены, не буду спорить


Цитата(Mal @ 13.6.2005, 18:16)
$_SESSION['count'] = serialize( $count );

данное действее нуна будет, делать 'внизу' (в конце отработаного сорса), после всех изменений в Объекте.
Кажись это не оч красиво. Проще использываться &.

ЗЫ: вопрос остаеться открытым, должно работать и без всяких извратов.

Автор: Mal Hack 13.6.2005, 18:47
Цитата(Jlekc @ 13.6.2005, 19:41)
хмм, а почему работает через

Все правильно... Я с ресурсом спутал.
Хотя логически все равно не понимаю... По логике свойства-то он сохранит, а вот методы не должен.

Цитата(Jlekc @ 13.6.2005, 19:41)
Всегда воспренимал ссылку на данные - '='.
А указатель на область памяти данных - '&'.

Есть такая фишка в 4 PHP, что при создании переменной создаются ее две копии.

Цитата(Jlekc @ 13.6.2005, 19:41)
данное действее нуна будет, делать 'внизу' (

Перед тем как в сессию записать.

Автор: Jlekc 13.6.2005, 19:16
Цитата(Mal @ 13.6.2005, 18:47)
Перед тем как в сессию записать

после всех изменений в екземпляре класса

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)