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

Reply via email to