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

Reply via email to