note 37915 deleted from function.register-shutdown-function by cmb

From: Date: Sun, 24 Nov 2019 08:58:16 +0000
Subject: note 37915 deleted from function.register-shutdown-function by cmb
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-213225@lists.php.net to get a copy of this message
Note Submitter: www dot php dot net at spam dot monnard dot org ---- Response to => vbwebprofi at gmx dot de 22-Nov-2003 03:12 You have to do a changement on the object to see the difference between = and =& Here is your code modified to see the difference. The modification of the code are essentially the var $Value_changed and the function change(). I have tested it under RedHat 9 with PHP 4.2.2 --8<--- cls_TEST.php --------------------------------------------->8-- <?php class TEST { var $Value; var $Value_changed; // Constructor function TEST($in_Value = 0){ // Register destructor register_shutdown_function(array(&$this, '_TEST')); $this->Value = $in_Value; $this->Value_changed = $in_Value; $this->_Log('TEST'); } // Destructor function _TEST() { $this->_Log('_TEST'); } // Private function function _Log($in_Msg) { $oF = fopen('/tmp/TEST.log', 'a'); fwrite($oF, sprintf("%s : %-5s = %d ; %d\n", date('Y-m-d H:i:s', time()), $in_Msg, $this->Value, $this->Value_changed)); fclose($oF); } // Function change() function change() { $this->Value_changed++; $this->_Log('change'); } } ?> --8<--- test_TEST.php -------------------------------------------->8-- <?php // include class TEST include_once('cls_TEST.php'); echo "New...<br>\n"; $o1 = new TEST(1); $o2 =& new TEST(2); # Strange declaration : $o3 &= new TEST(3); echo "Sleep...<br>\n"; sleep(5); echo "Change...<br>\n"; $o1->change(); $o2->change(); # The following line doesn't work ! #$o3->change(); echo "Sleep...<br>\n"; sleep(5); echo "End."; ?> --8<-------------------------------------------------------------->8-- It should produce a content like this in the file, specified in the _Log function : 2003-12-02 04:22:55 : TEST = 1 ; 1 2003-12-02 04:22:55 : TEST = 2 ; 2 2003-12-02 04:22:55 : TEST = 3 ; 3 2003-12-02 04:23:01 : change = 1 ; 2 2003-12-02 04:23:01 : change = 2 ; 3 2003-12-02 04:23:06 : _TEST = 1 ; 1 2003-12-02 04:23:06 : _TEST = 2 ; 3 2003-12-02 04:23:06 : _TEST = 3 ; 3

« previous php.notes (#213225) next »