Re: object refrences (POSSIBLE MAJOR BUG)
| From: | brad lafountain | Date: | Thu, 11 Apr 2002 22:45:38 +0000 |
| Subject: | Re: object refrences (POSSIBLE MAJOR BUG) | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-82631@lists.php.net to get a copy of this message | ||
--- Andi Gutmans <andi@zend.com> wrote:
> At 11:14 11/04/2002 -0700, brad lafountain wrote:
>
> >--- Andrey Hristov <ahristov@icygen.com> wrote:
> > > But dereferncing like this
> > > $foo->bar()->fubar
> >its not
> >$foo->bar()->fubar
> >its
> >$foo->bar->fubar
> >
> >4.1.2 can't derefrence objects from functions
> >that IS a feature of Z2.. but my example isn't
> >derefrencing something from a function just
> >a member of an object.
>
> Brad,
>
> I don't have time right now to study your example but you are most likely
> stumbling on one of the problems which are supposed to be solved in Engine
> 2. Actually it is the main driving force for Engine 2 which has java-like
> object handles and not objects as language primitives which some problems
> especially additional copying of objects. Try and always treat your object
> by-reference and it'll probably work.
>
> Andi
I really don't think that is the problem...
Im pretty sure i know exactly whats going on.. if you look at the zend_execute
it automatically adds a is_ref = 1; and a ref_count++; for all method calls(
the comment next to this line says /* for $this ref */.. this works normally
just becuase a normal method call is a IS_TMP_VAR.. but in the case of a
object's member it is a IS_VAR.. so the ref_count and is_ref gets kept right
along with the instance of the object.. so when you try and copy it with
$a_copy = $a;
the ref gets copyed along with it so changing anything in
$a_copy->some_object_you_have_called_a_method_on; the change will be reflected
in $a and $a_copy.
This is defintly a BUG in engine1 and i think it should be addressed.
this bug only happens when you invoke a method from a instance of an objects
member that is an object.
I looked thru the bugs and found a simmlar bug...
- Brad..
__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://taxes.yahoo.com/