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

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

所有这些代码都在同一类中。有人想出什么原因导致错误?

有帮助吗?

解决方案

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

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

以上是行不通的。

看到 PHP手册上的类属性: (强调我的)

类成员变量称为“属性”。您可能还会看到他们引用了使用其他术语,例如“属性”或“字段”,但是就此参考而言,我们将使用“属性”。它们是通过使用公共,受保护或私有的关键字之一来定义的,然后是普通变量声明。该声明可能包括初始化,但是此初始化必须是一个恒定值 - 也就是说,必须在编译时和 不得依赖运行时间信息才能评估.

您可以为 $depositmoney 如果当前尚不设置值,则将其初始化为初始化:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top