I don't think it's a bug. This weird behavior is due to the Engine 1 object
model (which will be different in Engine 2).
At 07:38 PM 2/12/2002 -0600, Jason Greene wrote:
>Zeev, Andi
>
>It appears that the bug we talked about in private correspondence does
>not just apply to object overloading. It appears to apply to normal
>objects as well.
>
>Consider the following code:
>
>class test {
> var $dummy;
>
> function do_something() {
> print "Hello\n";
> }
>
>}
>
>$obj=new test();
$obj == is_ref=1/refcount=1
>debug_zval_dump($obj);
You are passing $obj by value. So inside the debug_zval_dump() it will be
is_ref=0/refcount=1 (it will be copied).
>$obj->do_something();
Inside do_something it will be is_ref=1/refcount=2
>debug_zval_dump($obj);
You are passing $obj by value. So inside the debug_zval_dump() it will be
is_ref=0/refcount=1 (it will be copied).
Bottom line: Passing it by value makes it duplicate. This is Engine 1.
Nothing to do about it. I guess debug_zval_dump() isn't that useful after
all :)
Andi
>This will produce the following output:
>
>object(test)(1) refcount(2){
> ["dummy"]=>
> long(1) refcount(2)
>}
>Hello
>object(test)(1) refcount(1){
> ["dummy"]=>
> long(1) refcount(3)
>}
>
>ZEND_SEND_VAR is the opcode that does this in this scenario as well
>
>
>
>
>-jason
>
>
>
>--
>Jason T. Greene
>Internet Software Engineer
>
><[EMAIL PROTECTED]>
><[EMAIL PROTECTED]>
><[EMAIL PROTECTED]>
>
>Use PHP: http://www.php.net
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php