Stanislav Malyshev wrote:
>>        parent::test();
>
> What do you want parent::test() to mean?
>
>> This will echo 'A'. So like I said you have no way here of telling that
>> B:: was used.
>
> Because it wasn't. parent::test() means A::test(). 'parent::' means
> 'parent class of the class where this statement is' in PHP. For B,
> it's A.
Yes but B::test() was called to start the call chain and in this
situation I want the B::test() method to decorate A::test() and it just
isn't possible without allowing parent:: to forward the called class or
introducing a new keyword.
>
>> Then there are two problems (sort of). First problem being, then why
>> bother with lsb, you can do this already (which more so a 'wth' as
>
> If you can do it - do it.
I (and many other people) don't feel the need to do things this way and
it is slightly frustrating to see a patch implemented to allow us to
'sort of' do it cleanly but ultimately misses the mark. Especially when
it is probably a relatively minor change to support what we are asking
for. This is also a terrible argument to use against a new feature...but
that's an entirely separate matter.
>
>> opposed to a problem.) The second and much more prevelent problem is
>> that iirc you cannot do this kind of loose inheritance with statics in
>
> What is 'loose inheritance'?

By loose inheritance I mean extending and overwriting a method while
changing that method's parameter list.

I apologize, I grabbed php6 and appear to have not remembered things
quite right. I thought that you could not change the parameter list of
inherited static methods which is not the case in php6. Although you
WILL have a problem if you program to interfaces. If static public
test() is declared in an interface that  A implements then you won't be
able to change the parameter list in B.

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

Reply via email to