Tuesday, 24 April 2018

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

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...