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