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