At 13:07 10/04/2002 -0700, brad lafountain wrote:

>--- Andi Gutmans <[EMAIL PROTECTED]> wrote:
> > At 12:46 10/04/2002 -0700, brad lafountain wrote:
> >
> > >--- Andi Gutmans <[EMAIL PROTECTED]> wrote:
> > > > Hey guys,
> > > >
> > > > I still haven't finished reading the looooooong thread on 
> aggregation vs.
> > > > MI because you guys write so much :)
> > > > I would like to make a proposal for a solution which I think would fit
> > PHP
> > > > very nicely.
> > > > My main concern with MI is that there are many problems with it 
> including
> > > > namespace clashes and other problems most of you are probably familiar
> > > > with. I think trying to work around and find solutions for all of these
> > > > would make a PHP implementation of MI extremely hard to use and would
> > move
> > > > away from the spirit of PHP which is powerful simplicity.
> > > > What I have in mind is something similar to aggregation (in the 
> original
> > > > C++ sense which means a "has a" relationship) but improve it with an
> > > > auto-proxy mechanism.
> > > > Basically what I'd like to have is something like:
> > > >
> > > > class a aggregates b, c {
> > > >       ...
> > > > }
> > >
> > >  I did suggest this method already.
> >
> > Told you I didn't read all Emails :)
>
>  :)
>
> >
> > >But it really doesn't address the naming clash
> > >
> > >class b
> > >{
> > >  function print()
> > >  {
> > >  }
> > >}
> > >
> > >class c
> > >{
> > >  function print()
> > >  {
> > >  }
> > >}
> > >
> > >class a aggregates b, c
> > >{
> > >}
> > >$a = new A();
> > >
> > >$a->print();
> > >you said in the order they were aggregated. but what if i really want to
> > call
> > >c->print();
> > >
> > >would i do something like this.
> > >$a->c->print();
> >
> > I was thinking that we could have an explicit way of calling the right 
> one.
>
>  hmm what would this look like?
>
>  $a->c::print();
>  i guess that's not that bad. and its kinda consistant
>
>  but i do like
>  $a->c->print();
>  too..
>
>
>  and would we treat member of b and c the same way
>  $a->member_of_c = false;
>
>  then the collision again....
>  $a->same_name_var = false;
>
>  $a->c::same_name_var = false;
>  $a->b::same_name_var = false;
>
>  or
>
>  $a->c->same_name_var = false;
>  $a->b->same_name_var = false;
>
> > I do think that this by far the best solution because as I said it's
> > extremely simple and it doesn't get us into most of the deep issues the
> > other solutions get us into.
> > I think in real life coding it will work extremely well. For each proposal
> > you can find problems.
> >
> > >and how does this consern serilization. Would it need to be change do
> > >designate
> > >which objects are aggregated?
> >
> > Each object would know which objects it aggregates so I don't see a real
> > big problem here. I guess potentially there are always problems when
> > serializing nested objects.
>
>  I wasn't thinking it would be a problem but the serialization could 
> would need
>to change to handle this type of change.

Sure it needs to be changed.

>BTW:
>  Have you looked at my patch to handle method calls differently?


Yes and I don't like it. I haven't had time to do timings yet. I was very 
busy and will try and do it in the next few days.

Andi


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to