#28817 [Opn->Csd]: Var problem when extending domDocument
| From: | rrichards@php.net | Date: | Thu, 20 Jan 2005 11:48:24 +0000 |
| Subject: | #28817 [Opn->Csd]: Var problem when extending domDocument | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-72512@lists.php.net to get a copy of this message | ||
ID: 28817
Updated by: rrichards@php.net
Reported By: D dot Kingma at jool dot nl
-Status: Open
+Status: Closed
Bug Type: Zend Engine 2 problem
Operating System: *
PHP Version: 5CVS-2004-06-17 (dev)
New Comment:
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2005-01-11 11:51:51] D dot Kingma at jool dot nl
The fix in CVS is reverted
------------------------------------------------------------------------
[2004-12-04 12:42:21] rrichards@php.net
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
------------------------------------------------------------------------
[2004-12-04 10:09:02] georg@php.net
It's fixed in mysqli now (cvs).
/Georg
------------------------------------------------------------------------
[2004-10-22 12:53:21] Jason at amp-design dot net
This is much like the constructor bug in PHP4, because $this in the
constructor doesn't properly reference the object being constructed.
One way I normally get round this in PHP4 is to use the Factory
pattern, where you do
class A {
static public function &Factory() {
// Use this as a replacement to the constuctor
$obj = &new A();
$obj->var = 'Foo Bar';
return $obj;
}
}
you just need to construct classes using the static member function
like ...
$obj = &A::Factory();
instead of
$obj = &new A();
e.g.
class z extends domDocument{
/** variable can have name */
var $y=Array();
var $x;
function __construct(){
$this->y['doh']='me';
$x='aaaaahhhh';
print_r($this->y);
echo $x;
}
function &Factory() {
$obj = new z();
$obj->y['doh2']='me2';
return $obj;
}
}
$z= &z::Factory();
print_R($z);
However this to me does seem like a PHP Bug. It's very hard with
internal classes to know what behaviours are bugs and "features". A
submitted http://bugs.php.net/29092 and apparantly it's
not a bug,
however there is no mentioning of this in the documentation. As a
result the bug is really a documentation bug in my eyes.
Regards
Jason
------------------------------------------------------------------------
[2004-06-19 13:36:23] profic at kursknet dot ru
php5.0RC3
the same problem.
But I discovered, that the second assignment do things right
e.g.:
class a extends DOMDocument {
private $prop = array ();
public function __construct () {parent::__construct ()}
public function func () {
$this->prop[] = 'test';
$this->prop[] = 'test';
}
}
$o = new a ();
$o->func ();
var_dump ($o);
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/28817
--
Edit this bug report at http://bugs.php.net/?id=28817&edit=1