On 11/26/07, Mike Lively <[EMAIL PROTECTED]> wrote:
> I have come up with three different patches that allow us to work around
> the issue of parent:: being considered an 'explicit class reference' and
> thus disallowing static:: to effectively used.
>
> The patches are against 5.3. I also have patches against HEAD but I was
> having problems getting run-tests.php to run against that code base (it
> would hang on the first test no matter which set of tests I ws running.)
>
> All three patches have different levels of intrusiveness to the engine
> and all three patches have been tested against (and pass) the existing
> lsb tests in Zend/tests/lsb_*.phpt
>
> 1.) lsb.parent-forwarding.patch
> This patch modifies the behavior of only parent:: to not change
> EG(called_class) to the parent of the current scope. With this change.
>
> <?php
>
> class A {
>     public static function test() {
>        echo get_called_class()."\n";
>     }
> }
>
> class B extends A {
>     public static function test() {
>        parent::test();
>     }
> }
>
> A::test();
> B::test();
>
> ?>
> will output:
> A
> B
>
> It should be noticed that with this patch parent:: will always resolve
> to the parent of the current scope, it will just not make any changes to
> the called_scope (effectively)

I believe this first patch is the proper way to go. It feels
"natural", "intuitive", etc.

-- 
Alexey Zakhlestin
http://blog.milkfarmsoft.com/

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

Reply via email to