Search code examples
phpstringconcatenationstatic-variables

Static Function Variables and Concatenation in PHP


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?


Solution

  • 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.