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現在設定されていない場合は値を初期化することができます。

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

staticただし、状態を追跡する代わりに、インスタンスのメソッドとプロパティを削除して使用することをお勧めし ます。globalまた、コンストラクター、セッターを介して、またはメソッドの呼び出し中に、これらのものを取り除き、依存性を注入することもできます。これにより、結合が減少し、コードがより保守しやすくなります。

于 2010-06-21T10:47:37.230 に答える