Sunday, 20 March 2016

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




This thing is bugging me a lot. I'm getting Parse error: syntax error, unexpected '.', expecting ',' or ';' at this line



public static $user_table = TABLE_PREFIX . 'users';


TABLE_PREFIX is a constant created by define function


Answer




Static class properties are initialized at compile time. You cannot use a constant TABLE_PREFIX to concatenate with a string literal when initializing a static class property, since the constant's value is not known until runtime. Instead, initialize it in the constructor:



public static $user_table;

// Initialize it in the constructor
public function __construct() {
self::$user_table = TABLE_PREFIX . 'users';
}

// If you only plan to use it in static context rather than instance context

// (won't call a constructor) initialize it in a static function instead
public static function init() {
self::$user_table = TABLE_PREFIX . 'users';
}


http://us2.php.net/manual/en/language.oop5.static.php




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.





Update for PHP >= 5.6



PHP 5.6 brought limited support for expressions:




In PHP 5.6 and later, the same rules apply as const expressions: some limited expressions are possible, provided they can be evaluated at compile time.



No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...