PHP CLASSE: проблема получения значения от функции в переменную элемента

StackOverflow https://stackoverflow.com/questions/3083943

  •  28-09-2019
  •  | 
  •  

Вопрос

У меня есть функция, которая получает значение из базы данных и возвращает его. Я вызываю функцию, чтобы сохранить ее в переменную пользователя, но я получаю следующую ошибку:

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