Hi!
It seems natural to think of LSB as a language feature, and so it doesn't feel right to have it partly implemented as a keyword, and then fix the problematic part as function.
There's nothing wrong with functions - call_user_* are functions too, and func_get_args(), etc.
We already see how call_user_func is painful to use (i.e. with methods that use references), that same burden will be put on forward_static_call.
If we have problem with using call_user_* with references, that should be fixed (do we have description of what exactly is missing - like bug report or RFC or something?) But it won't be fixed by changing parent::, so how it's relevant here?
Why would that be no longer possible ? If you want to make a non-forwarding call to the parent class, you can use TheParentClassName::foo();.
Why having parent:: at all then? You could always use the class name, right? But for some reason we do have parent:: - and that reason is that using explicit class name is not a good style in this context, it both obscures the intent and makes unnecessary dependencies in the code. Now imagine on top of that we have name:: and parent:: work differently, so you don't have choice but using name:: for certain things.
It's about 85% slower than a direct call. Sure it's not that slow when measuring absolutely, but we're talking about a feature that will be typically used in frameworks and libraries, so the amount of calls may be quite big.
I do not think extra CPU instruction or two is really the factor here. We are talking about high-level language, not assembly language.
-- Stanislav Malyshev, Zend Software Architect [EMAIL PROTECTED] http://www.zend.com/ (408)253-8829 MSN: [EMAIL PROTECTED] -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php