Pregunta

Tengo una función que obtiene un valor de la base de datos y devuelve. Me llamo la función de almacenar en una variable miembro, pero me sale el siguiente error:

Parse error: parse error, expecting `','' or `';'' in I:\wamp\www\deposit\classes\Site.php on line 14

Esta es la línea que causa el error

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

Y esta es la función que obtiene el valor de la base de datos

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

todo esto es el código de la misma clase. Alguien una idea de lo que está causando el error?

¿Fue útil?

Solución

Las propiedades de clase no puede ser declarada con la información de tiempo de ejecución.

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

Lo anterior no funcionará.

Vea la PHP Manual sobre las propiedades de clase: ( énfasis mío)

  

variables miembro de clase se llama "propiedades". También puede verlos a que se refiere el uso de otros términos tales como "atributos" o "campos", pero para los propósitos de esta referencia usaremos "propiedades". Se definen mediante el uso de una de las palabras clave pública, protegida o privada, seguida de una declaración de variable normal. Esta declaración puede incluir una inicialización, pero esta inicialización debe ser un valor constante - es decir, debe ser capaz de ser evaluados en tiempo de compilación y no debe depender de la información en tiempo de ejecución con el fin de ser evaluados .

Se puede crear un captador de $depositmoney y lo han inicializar el valor si está actualmente desactivada:

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

Sin embargo, sugiero para deshacerse de los métodos static y el uso de instancia y propiedades en lugar de realizar el seguimiento del estado. También tendrá que deshacerse de las cosas global y dependencias inyectar a través del constructor, organismos o durante la invocación del método. Que disminuye el acoplamiento y debe hacer que el código sea más fácil de mantener.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top