Don't you mean it's NOT valid syntax?
Derick Rethans wrote:
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
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php