Greg Beaver wrote:
Brandon Savage wrote:
On Sep 8, 2009, at 6:12 PM, Daniel Convissor wrote:

Hi Brandon:

Nice stuff.  Two qualms with the following:

   PHP 5's object model also significantly changes the way objects
   are passed, passing a pointer to the object rather than copying
   the object.

First, "passed" is the followed immediately by "passing."  Pick a
different word for one or the other.

Second, the documentation in general talks about it being "by reference"
rather than as "a pointer."

Thanks,

--Dan
Hi Dan,

I have no trouble changing the wording on your first point, as it does
make the wording seem a bit odd.

However, each spot where the documentation states that objects are
passed by reference is wrong. See this blog post by Sara Golemon:
http://blog.libssh2.org/index.php?/archives/51-Youre-being-lied-to..html

Essentially, objects are like references, pointing to a particular spot
in memory where the object can be found. While it's easier to describe
objects as being passed by reference in PHP 5, this is in fact not the
case.

I'm not sure how to change the documentation to reflect this. How
specific should we get in the documentation?

Hi,

Don't use pointer, that's also inaccurate, and will be confusing to
someone from a C background.  Instead, use language somewhat similar to:

PHP 5's object model was designed to make it simpler and faster to pass
objects as parameters to functions and methods.  Rather than copying the
contents of the object, PHP 5 represents objects with a "handle" that is
used to look up the actual object contents.  The technical details are
not important in most situations.  The most important thing to
understand is that the common PHP 4 practice of using references to
instantiate and pass objects should not be used in PHP 5, for both the
subtle bugs the practice can introduce and for performance reasons.

Greg

I have to agree with Greg--although I think that somewhere in the manual it would be good to have an explanation of what's really going on (perhaps in the Appendix). Sara's blog post doesn't deal specifically with passing objects, but assigning them--which is more of a copy-on-write reference setup than anything like a real pointer.

Otherwise I think it's good. I would also suggest adding in links to the documentation on cloning, abstract, interfaces, etc.


Regards,

Torben

Reply via email to