On Thu, 2013-08-15 at 16:42 -0700, Stas Malyshev wrote:
> Hi!
> 
> > Though obv, in reality we wouldn't use runkit_constant_add(), it'd be a
> > new opcode which had the same effect.  This is basically transparent to
> > opcode caches, allows the constant to actually change based on runtime
> 
> If the class definition can actually change at runtime, I think it'd
> make it much harder for opcode caches since they can't any longer assume
> class definition can't change at any random place in the code.
> 
> But this is not the most tricky part. The most tricky part is this:
> 
> 
> if(true) return;
> class Foo {
> const halfpie = M_PI/2;
> }
> 
> Now what happens if this is implemented as an opcode? We can't run any
> opcodes past return statement, but Foo is expected to be defined here.

note that we have this functionality already:

$ php -r 'class A { const C = FOO; } define("FOO", 23); echo A::C;'
23

The first fetch will resolve that.
If we add "constant scalar expression" this has to work for class
constants, too. Else we add crazy new inconsistencies to the language.

johannes



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

Reply via email to