There is no "fix" for the the class constants yet. I didn't have the time to look at it nor anyone else did. Anyway my patch for "regular" constant folding is still on-line, if someone wants to commit or use it.

Nuno


----- Original Message -----
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

Reply via email to