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