Did this topic end nowhere? Isn't some fix here better than no fix? class-constants are currently compile-time constants and letting them use constants from classes defined in other files will move them to run-time constants (because php has ambiguity-feature of conditional-loading), so, probably, this part should be skipped anyway.
On 9/10/07, Marcus Boerger <[EMAIL PROTECTED]> wrote: > Hello Dmitry, > > This is a good catch. I gave it a bit of attention some time ago and it is > not trivial to fix. However code often improves from this. Most of all > ofeten enough you end up with some consts that would in other languages be > enums like: > class Week { > const Monday = 0; > const Tuesday = Monday + 1; > // ... > } > or this: > class Logging { > const INFO = 0; > const WARN = INFO + 1; > const FAIL = WARN + 1; > // ... > } > > I'd especially like this because it would make my enum implementation in > pecl/spl_types more handy. > > marcus > > Monday, September 10, 2007, 9:55:49 AM, you wrote: > > > I see a problem with this idea. > > In case we support constant expressions, we should support constants in such > > expressions, but the values of these constants may be unknown in compile > > time. > > > <?php > > class Foo { > > const A = 0; > > } > ?>> > > > <?php > > require_once "foo.php"; > > class Bar extends Foo { > > const B = self::A + 1; > > } > ?>> > > > Delaying constant initialization for expressions in general will require > > keeping of Abstaract Syntax Tree, that should be evaluated at run-time by > > zval_update_constant(). > > > Thanks. Dmitry. > > >> -----Original Message----- > >> From: Nuno Lopes [mailto:[EMAIL PROTECTED] > >> Sent: Saturday, September 08, 2007 10:50 PM > >> To: Stanislav Malyshev > >> Cc: internals@lists.php.net; [EMAIL PROTECTED]; [EMAIL PROTECTED] > >> Subject: Re: Re: [PHP-DEV] constant folding optimization > >> > >> > >> >> I made a patch to implement constant folding optimization in the > >> >> Zend engine. > >> >> The patch is available at: > >> >> http://web.ist.utl.pt/nuno.lopes/zend_constant_folding.txt > >> > > >> > I like the idea a lot, however I think this patch has one > >> > significant downside - as far as I understand, it doesn't enable > >> > constant expressions in constant contexts. I.e. I can do $a = 2+2 > >> > and get it evaluated but I can't do function foo($a = 2+2) > >> or const > >> > $a = 2+2. If we moved this to the parser level I think we could do > >> > both. > >> > >> Well we don't support that syntax at this moment. If you are saying > >> that we could add support for such syntax.. it does seem a > >> good idea, > >> but in that case we would need to modify a few rules of the grammar > >> (like adding a const_expr production, and allow static_scalar derive > >> it, etc..). > >> > >> If others agree with this syntax, I can take a look in > >> implementing it. > >> > >> Nuno > >> > >> -- > >> 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 > > -- Alexey Zakhlestin http://blog.milkfarmsoft.com/ -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php