Re: Bitwise Declaration of Flags
| From: | Clint Priest | Date: | Sun, 27 Sep 2009 23:18:52 +0000 |
| Subject: | Re: Bitwise Declaration of Flags | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-45642@lists.php.net to get a copy of this message | ||
Don't you mean it's NOT valid syntax?
Derick Rethans wrote:
On Sun, 27 Sep 2009, jvlad wrote: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. DerickThis 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() {ok, and could you please point out to the thing in self::FLAG_1 that is unresolveable at compile-time?$this->flags = self::FLAG_1 | self::FLAG_3;} }