[Tickets #4062] Re: Kolab.php compatibility with php5

bugs@bugs.horde.org bugs at bugs.horde.org
Wed Nov 15 03:56:22 PST 2006


Ticket URL: http://bugs.horde.org/ticket/?id=4062
 Ticket             | 4062
 Updated By         | wrobel at gentoo.org
 Summary            | Kolab.php compatibility with php5
 Queue              | Kolab
 Type               | Bug
 State              | Feedback
 Priority           | 2. Medium
 Owners             | 

wrobel at gentoo.org (2006-11-15 03:56) wrote:

> One questions though, shouldn't the document object be passed by 
> reference to the dom constructors?

As mentioned I forwarded the question:

One of the Horde programmers wanted to know if it would be better to
pass the parent document as a reference when creating Nodes, Elements
or Attributes (http://bugs.horde.org/ticket/?id=4062). I am not quite
certain if there is a specific reason against it so I thought I just
try to ask you for your opinion.

Answer from Alexandre Alapetite:

I am not really sure to understand your question...

1) When creating a new element, there is already a (indirect) reference to
the parent document, as you can see on your line 155
(the "$this" reference)

    function create_element($name) 
        return new Horde_DOM_Element($this->node->createElement($name),

On this line 155, the "$this" is referring to a Horde_DOM_Document which
is the parent document, which inherits from
Horde_DOM_Node which contains a reference "$this->node" or to the real
PHP5 XML DOMDocument.

2) If you mean passing the parent document "by reference", in opposition
to "by value", this is not a good idea as objects
variables in PHP5 are already references. When making an assignment, there
is no copy of the object. So passing the parent "by
reference" would make a pointer of pointer quite strange, error prone, and
I do not see the interest.

3) In my library since version 1.8 I think, I have an additional attribute
"myOwnerDocument" for php4DOMNode objects (which you
call "Horde_DOM_Node") which is a direct reference to the parent document
and provides speed improvement

See line 196 of
You may want to update your code accordingly.

More information about the bugs mailing list