From:             [EMAIL PROTECTED]
Operating system: Linux
PHP version:      4.2.3
PHP Bug Type:     Class/Object related
Bug description:  Nonsymetric data syncronization with references

The following script creates a class which should become a class for
session-handling

<?php
class my_sess {
  var $const = 0;

  function my_sess () {
    echo 'Constructor'."\n";
    echo (++$this->const)."<br>\n";
    session_set_save_handler (
      array(&$this, 'open'),
      array(&$this, 'close'),
      array(&$this, 'read'),
      array(&$this, 'write'),
      array(&$this, 'destroy'),
      array(&$this, 'gc')
    );
    session_start ();
  }

  function open () {
    echo 'open'."\n";
    echo (++$this->all)."<br>\n";
  }

  function close () {
    echo 'close'."\n";
    echo (++$this->all)."<br>\n";
  }

  function read () {
    echo 'read'."\n";
    echo (++$this->all)."<br>\n";
  }

  function write () {
    echo 'write'."\n";
    echo (++$this->all)."<br>\n";
  }

  function destroy () {
    echo 'destroy'."\n";
    echo (++$this->all)."<br>\n";
  }

  function gc () {
    echo 'gc'."\n";
    echo (++$this->all)."<br>\n";
  }
  
  function set () {
    echo 'set'."\n";
    echo (++$this->all)."<br>\n";
  }
}

$session = new my_sess ();

echo '------------'."<br>\n";
$session->set ();
$session->set ();
$session->set ();
echo '------------'."<br>\n";

session_write_close ();
?>

If you run this script you get the following output:
---------------------------------------------------------
Constructor 1

Warning: Cannot send session cache limiter - headers already sent (output
started at /data/here/htdocs/versuch2.php:6) in
/data/here/htdocs/versuch2.php on line 16
open 1
read 2
------------
set 3
set 4
set 5
------------
write 3
close 4
-------------------------------------------------------

whereas you would expect 

--------------------------------------------------------
Constructor 1

Warning: Cannot send session cache limiter - headers already sent (output
started at /data/here/htdocs/versuch2.php:6) in
/data/here/htdocs/versuch2.php on line 16
open 1
read 2
------------
set 3
set 4
set 5
------------
write 6
close 7
--------------------------------------------------------

It seems like there are two instances of the class hanging around. But how
they relate to each other is a mystery.

-- 
Edit bug report at http://bugs.php.net/?id=20520&edit=1
-- 
Try a CVS snapshot:         http://bugs.php.net/fix.php?id=20520&r=trysnapshot
Fixed in CVS:               http://bugs.php.net/fix.php?id=20520&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=20520&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=20520&r=needtrace
Try newer version:          http://bugs.php.net/fix.php?id=20520&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=20520&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=20520&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=20520&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=20520&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=20520&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=20520&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=20520&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=20520&r=isapi

Reply via email to