代码之家  ›  专栏  ›  技术社区  ›  Christophe

php classe:从函数获取值到成员变量时出现问题

  •  0
  • Christophe  · 技术社区  · 15 年前

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

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

    所有这些代码都在同一类中。有人知道是什么导致了这个错误吗?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Gordon Haim Evgi    15 年前

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

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

    以上内容无效。

    PHP Manual on Class Properties: (强调矿山)

    类成员变量称为“属性”。您也可以看到它们是使用其他术语(如“属性”或“字段”)引用的,但在本参考中,我们将使用“属性”。它们是通过使用关键字public、protected或private中的一个来定义的,然后是一个普通变量声明。此声明可能包含初始化,但此初始化必须是一个常量值——即,必须能够在编译时对其进行计算,并且 必须不依赖运行时信息才能进行评估 .

    你可以为 $depositmoney 如果当前未设置,则让它初始化该值:

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

    不过,我建议把 static 并使用实例方法和属性来跟踪状态。你也要摆脱 global 通过构造函数、setter或方法调用填充和注入依赖项。这样可以减少耦合,使代码更易于维护。

    推荐文章