我有一个从数据库中获取值并返回它的函数。我调用函数将它存储到成员变量中,但是我收到以下错误:
Parse error: parse error, expecting `','' or `';'' in I:\wamp\www\deposit\classes\Site.php on line 14
这是导致错误的行
public static $depositmoney = self::get_balance();
这是从数据库中获取值的函数
public static function get_balance()
{
global $link, $usertable, $userid, $useridentify;
//query current balance
$cb = mysqli_fetch_object(mysqli_query($link, "SELECT deposit FROM ".$usertable." WHERE ".$userid."=".$useridentify.""));
return $cb->deposit;
}//end of function get_balance().
所有这些代码都在同一个类中。任何人都知道导致错误的原因是什么?
答案 0 :(得分:3)
不能使用运行时信息声明类属性。
public static $depositmoney = self::get_balance();
上述方法无效。
参见PHP Manual on Class Properties:(强调我的)
类成员变量称为“属性”。您也可以使用“属性”或“字段”等其他术语来查看它们,但出于本参考的目的,我们将使用“属性”。它们通过使用public,protected或private之一,然后是普通变量声明来定义。此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,必须不依赖于运行时信息才能进行评估。
您可以为$depositmoney
创建一个getter,如果当前未设置该值,则初始化该值:
public static function getDepositMoney()
{
if(self::$depositmoney === NULL) {
self::$depositmoney = self::get_balance();
}
return self::$depositmoney;
}
但是,我建议删除static
并使用实例方法和属性来跟踪状态。您还希望摆脱global
内容并通过构造函数,setter或在方法调用期间注入依赖项。这会减少耦合并使代码更易于维护。