hi at all,

i've a very strange problem but i don't know if this a real bug or only my
imcompetence?!

it is a problem with class variables set by __constructor() function in
PHP5...
look at this code:

<?
   class MyClass extends DomNode {      // remove "extends DomNode" and
everything is fine
      private $__arr = Array();

      public function __construct() {
         //$this->__arr = Array();      // uncomment this line for testing
         $this->__setVar("value set inside constructor");
      }

      public function __setVar($classname) {
         print("\n\nexecuting __setVar()\n");
         print("trying to push \"" . $classname . "\" into \$this->__arr
with array_push\n");
         // array_push only works in several cases...
         array_push($this->__arr, $classname);

         // comment following line for testing
         //$this->__arr[] = $classname; 

         /*
         foreach($this->__arr as $parentClassname) {
            print($parentClassname . "\n");
         }
         */
      }
   }
        
   print("<pre>");
   $node = new MyClass();
   print_r($node);
   $node->__setVar("value set outside object method");
   print_r($node);
   print("</pre>");
?>

output:
*******************************************
executing __setVar()
trying to push "value set inside constructor" into $this->__arr with
array_push
MyClass Object
(
    [__arr:private] => Array
        (
        )

)


executing __setVar()
trying to push "value set outside object method" into $this->__arr with
array_push
MyClass Object
(
    [__arr:private] => Array
        (
            [0] => value set outside object method
        )

)
*******************************************

ok, in my opinion the Array $this->_arr should have a value "value set
inside constructor" after creating the object set by array_push (see output
line 2)!

But there are several cases in which this bug does not appear:
- remove "extends DomNode" from code and it works fine
        ...but what does DomNode with my __construct() function?!
- uncomment line 6 and it will work
        ...don't ask me why it works now?!
- uncomment line 19 and it will work
        ...seens that array_push does not work correctly.

by the way i'm using PHP5 cvs-version from 2004-05-02 10:30...
maybe you could help me out of this dilemma..
another question for the php experts: is this information enough for sending
a bug to php.bugs?

thanks for your attention.
bye
vivi

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to