On Sun, 27 Sep 2009, jvlad wrote:
> > This is not allowed since declaration values should be resolvable at
> > compile time. I.e. they can not be an expression, but only a value
> > literal.
> >
> > While technically expression folding is possible, it's not
> > implemented in any part of the PHP engine (AFAIK), and I don't think
> > it's planned any time soon.
> >
> > To do what you want, initialize the value in the constructor:
> >
> > class foo {
> > ...
> > private $flags;
> >
> > function __construct()
> > {
> > $this->flags = self::FLAG_1 | self::FLAG_3;
> > }
> > }
> >
>
> ok, and could you please point out to the thing in self::FLAG_1 that
> is unresolveable at compile-time?
The following is also valid syntax:
class foo {
private $Flags = self::FLAG_1 | self::FLAG_3
const FLAG_1 = 1;
const FLAG_2 = 2;
const FLAG_3 = 4;
}
When the compiler hits self::FLAG_1 here, it's not yet defined.
Derick
--
http://derickrethans.nl | http://ezcomponents.org | http://xdebug.org
twitter: @derickr
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php