Jeśli moglibyście - sprawdźcie, jak to działa na waszych wersjach php - u mnie w każdym razie na php5.0.2 zarówno na windowsie jak i linuksie pojawił się ten sam błąd.
Natomiast na php 5.1.0 alfa wszystko jest OK.
<?php class test { function __construct() { { $_SESSION['iForConstruct'] = 1; $_SESSION['iForDestruct'] = 1; } $_SESSION['iForConstruct']++; } function __destruct() { $_SESSION['iForDestruct'] ++; } } $test = new test(); ?>
Jak łatwo zauważyć - wartość iForDestruct powinna się zwiększać co każde odświerzenie, tak jak to się dzieje w przypadku iForConstruct
Niestety - nic takiego się nie dzieje.
++++++++++++++++++++++++++
Co ciekawe - na bugs.php.net otrzymałem informację, że jest to normalne i oczekiwane zachowanie, ponieważ "The session is ended before destructors are run."
Cikawe, czy to oznacza, że aktualne zachowanie php5.1 zostanie zmodyfikowane, czy też ktoś jednak przekonał się, że jest to jednak niezgodne z oczekiwaniem większości?