ID:               16245
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
 Status:           Open
-Bug Type:         Class/Object related
+Bug Type:         Documentation problem
 Operating System: Windows 2000
 PHP Version:      4.1.1
 New Comment:

I guess this is expected behaviour.
Reclassified as a documentation problem.
(BTW you can use global $cnt to overcome this problem)


Previous Comments:
------------------------------------------------------------------------

[2002-03-24 11:28:51] [EMAIL PROTECTED]

 Static variables inside member functions of a classes have wrong
scope. They should belong to each instance of a class, like normal
class properties, but they're belong to class definition instead and,
therefore, shared between every instance of this class. It makes static
variables unusable into class member variables. 
 Here is an example:

// Define class
class A
{
    var $id = null;

    function A($id)
    {
        $this->id = $id;
    }

    function func()
    {
// Here we have counter into static variable
        static $cnt;
        if (!$cnt)
            $cnt = 0;
// Show counter value and ID of a class instance
        echo $this->id.": ".($cnt++)."\n";
    }
};

// Create 2 instances of our class with different IDs
$a = new A('A');
$b = new A('B');
// Call method of each class instance twice and see, 
// what will happen
$a->func();
$b->func();
$a->func();
$b->func();

Expected results:
-----------------
A: 0
B: 0
A: 1
B: 1

Actual results:
---------------
A: 0
B: 1
A: 2
B: 3



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=16245&edit=1

Reply via email to