Strange parse error with static concatenated strin

2019-06-21 05:27发布

问题:

I'm getting this error:

Parse error: syntax error, unexpected '.', expecting ',' or ';' in /var/(...)/config.php on line 5

With this (simplified) code:

<?php

class Config
{
   public static $somevar = "Date: " . date('Y');
}

?>

I thought this was valid php, but I guess not... what am I doing wrong here? Thanks!

回答1:

According to the PHP docs:

Like any other PHP static variable, static properties may only be initialized using a literal or constant; expressions are not allowed. So while you may initialize a static property to an integer or array (for instance), you may not initialize it to another variable, to a function return value, or to an object.

Try writing

Config::$somevar = "Date: " . date('Y');

after the class definition.



回答2:

No operation or function is allow for property initialization, because this is evaluated when parsing.



回答3:

From Manual

Like any other PHP static variable, static properties may only be initialized using a literal or constant; expressions are not allowed. So while you may initialize a static property to an integer or array (for instance), you may not initialize it to another variable, to a function return value, or to an object.