Hello Dmitry,

  of course, what hinders you?
See original mail from Mike: http://news.php.net/php.internals/21991

regards
marcus

Wednesday, March 1, 2006, 12:51:51 PM, you wrote:

> Can I look into patch?

> Dmitry.

>> -----Original Message-----
>> From: Marcus Boerger [mailto:[EMAIL PROTECTED] 
>> Sent: Wednesday, March 01, 2006 1:01 PM
>> To: PHP-DEV
>> Cc: Andi Gutmans; Mike Lively
>> Subject: Re: [PHP-DEV] [PATCH] Late Static Binding
>> 
>> 
>> Hello internals,
>> 
>>    it looks like either nobody objects or nobody has 
>> interest. Either way i tested the patch and worked helped it 
>> a bit and it looks good, doesn't affect anything else and 
>> doesn't show a single problem in valgrind. So If noone 
>> objects i will commit this next week.
>> 
>> regards
>> marcus
>> 
>> special mail to andi :-)
>> 
>> 
>> Thursday, February 23, 2006, 11:06:02 PM, you wrote:
>> 
>> > I have finished a patch that implements a working version of late 
>> > static binding.
>> 
>> > I used the notes from the Paris PDM as my guidelines for 
>> > implementation.
>> > 
>> (http://www.php.net/~derick/meeting-notes.html#late-static-bin
> ding-using-this-without-or-perhaps-with-a-different-name)
>> > As requested in the notes I reused 'static::'. I also wrote 
>> a few tests
>> > not only to test the new functionality but also to make 
>> sure 'static' can't be inherited or extended.
>> 
>> > I also added a new function get_caller_class() which 
>> returns the name 
>> > of the class that static:: would represent.
>> 
>> > (borrowing from PDM notes)
>> > In php5.* the following script outputs "A::static2":
>> 
>> > <?php
>> >         class A {
>> >                 static function staticA() {
>> >                         self::static2();
>> >                 }
>> 
>> >                 static function static2() {
>> >                         echo "A::static2\n";
>> >                 }
>> >         }
>> 
>> >         class B extends A {
>> >                 static function static2() {
>> >                         echo "B::static2\n";
>> >                 }
>> >         }
>> 
>> >         B::staticA();
>> ?>>
>> 
>> > This has somewhat recently been highlighted by different 
>> developers to 
>> > be somewhat problematic behavior in creating user friendly APIs. If 
>> > you want to see a possible use for it you need look no further than 
>> > the example ZActiveRecord API that was used in their webcast with 
>> > php|arch.
>> > 
>> (http://blog.joshuaeichorn.com/archives/2006/01/09/zactivereco
>> rd-cant-work/)
>> > Currently the code laid out there is impossible short of 
>> some ugly use of
>> > debug_backtrace() and file parsing :/. This patch of course 
>> would allow that kind of code too exist.
>> 
>> > In a small example based on the one I gave earlier you could change 
>> > the code too the following and have it print "B::static2":
>> 
>> > <?php
>> >         class A {
>> >                 static function staticA() {
>> >                         static::static2();
>> >                 }
>> 
>> >                 static function static2() {
>> >                         echo "A::static2\n";
>> >                 }
>> >         }
>> 
>> >         class B extends A {
>> >                 static function static2() {
>> >                         echo "B::static2\n";
>> >                 }
>> >         }
>> 
>> >         B::staticA();
>> ?>>
>> 
>> > As far as current userland code impact, there is very 
>> little as far as 
>> > I can tell. No keywords have been added, just another use for an 
>> > existing one. No changes were made to self:: or parent:: so 
>> the change 
>> > should be pretty transparent. The only thing that I see remotely 
>> > causing any issues would be the new function 
>> (get_caller_class().) I 
>> > added that just to complete the set so to speak.
>> 
>> 
>> -- 
>> PHP Internals - PHP Runtime Development Mailing List
>> To unsubscribe, visit: http://www.php.net/unsub.php
>> 
>> 
>> 




Best regards,
 Marcus

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

Reply via email to