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 > > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php