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
> 

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

Reply via email to