質問

データベースから値を取得して返す関数があります。関数を呼び出してメンバー変数に保存しますが、次のエラーが発生します。

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マニュアル: (私の強調)

クラスメンバー変数は「プロパティ」と呼ばれます。また、「属性」や「フィールド」などの他の用語を使用することに言及していることもありますが、このリファレンスの目的のために「プロパティ」を使用します。それらは、パブリック、保護、またはプライベートのキーワードの1つを使用して定義され、次に通常の変数宣言が続きます。この宣言には初期化が含まれる場合がありますが、この初期化は一定の値でなければなりません。つまり、コンパイル時に評価できる必要があります。 評価されるために実行時の情報に依存してはなりません.

Getterを作成できます $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