Static Function Variables and Concatenation in PHP

jklanders picture jklanders · Feb 12, 2011 · Viewed 7.1k times · Source

Consider the following:

$var = 'foo' . 'bar'; # Not a member of a class, free-standing or in a function.

As soon as I mark $var as static, however:

static $var = 'foo' . 'bar';

PHP (5.3.1 on a WAMP setup) complains with the following error:

Parse error: syntax error, unexpected '.', expecting ',' or ';'

It seems that the string concatenation is the culprit here.


What's going on here? Can someone explain the rules for static variables to me?

Answer

netcoder picture netcoder · Feb 12, 2011

The manual states, in Variables scope:

Trying to assign values to these [static] variables which are the result of expressions will cause a parse error.

There is also mention of it in Static keyword:

Like any other PHP static variable, static properties may only be initialized using a literal or constant; expressions are not allowed.

Although it should be noted that a property, static or not, cannot be initialized using an expression neither.