0

我有一个从数据库中获取值并返回它的函数。我调用该函数将其存储到成员变量中,但出现以下错误:

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().

所有这些代码都在同一个类中。有人知道导致错误的原因吗?

4

1 回答 1

3

类属性不能用运行时信息声明。

public static $depositmoney = self::get_balance();

以上将不起作用。

请参阅关于类属性的 PHP 手册:(强调我的)

类成员变量称为“属性”。您可能还会看到使用“属性”或“字段”等其他术语来提及它们,但出于本参考的目的,我们将使用“属性”。它们是通过使用关键字 public、protected 或 private 之一定义的,后跟一个普通的变量声明。这个声明可能包括一个初始化,但是这个初始化必须是一个常数值——也就是说,它必须能够在编译时被评估,并且不能依赖于运行时信息才能被评估

$depositmoney如果当前未设置,您可以创建一个 getter并让它初始化该值:

public static function getDepositMoney()
{
    if(self::$depositmoney === NULL) {
        self::$depositmoney = self::get_balance();
    }
    return self::$depositmoney;
}

但是,我建议摆脱 static并使用实例方法和属性来跟踪状态。您还希望摆脱这些global东西并通过构造函数、设置器或在方法调用期间注入依赖项。这会减少耦合并使代码更易于维护。

于 2010-06-21T10:47:37.230 回答