Initializing PHP class property declarations with simple expressions yields syntax error

Posted by user171929 on Stack Overflow See other posts from Stack Overflow or by user171929
Published on 2010-04-24T01:41:11Z Indexed on 2010/04/24 1:43 UTC
Read the original article Hit count: 282

Filed under:
|
|
|
|

According to the PHP docs, one can initialize properties in classes with the following restriction:

"This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated."

I'm trying to initialize an array and having some issues. While this works fine:

public $var = array(
    1 => 4,
    2 => 5,
);

This creates a syntax error:

public $var = array(
    1 => 4,
    2 => (4+1),
);

Even this isn't accepted:

public $var = 4+1;

which suggests it's not a limitation of the array() language construct.

Now, the last time I checked, "4+1" equated to a constant value that not only should be accepted, but should in fact be optimized away. In any case, it's certainly able to be evaluated at compile-time.

So what's going on here? Is the limitation really along the lines of "cannot be any calculated expression at all", versus any expression "able to be evaluated at compile time"? The use of "evaluated" in the doc's language suggests that simple calculations are permitted, but alas....

If this is a bug in PHP, does anyone have a bug ID? I tried to find one but didn't have any luck.

© Stack Overflow or respective owner

Related posts about php

Related posts about class