2010-02-10 11 views
6
class My_class 
{ 
    const STATUS_ERROR = 0; 
    const STATUS_OK = 1; 
    const DB_TABLE = TABLE_PREFIX . 'class_table'; 
}

Los dos consensos de estado funcionan bien y se puede acceder dentro de los métodos de clase como self::STATUS_ERROR y self::STATUS_OK bien.¿Cómo puedo concatenar una constante y una variable y almacenarla en una constante de clase con PHP?

El problema es cómo evitar que se produzca el siguiente error cuando trato de definir la tercera constante.

Parse error: syntax error, unexpected '.', expecting ',' or ';' in /home/sub/sub/directory/script.php

+0

También me encontré con el mismo problema. Bueno, parece una limitación para mí. También mencionado aquí: http://bugs.php.net/bug.php?id=42355 –

+1

El error anterior se transformó en un RFC, y esto fue aprobado para su inclusión en v 5.6 donde esta capacidad está ahora disponible: https://wiki.php.net/rfc/const_scalar_exprs. –

Respuesta

9

no lo hacen. Las constantes son constantes. No puedes almacenar nada en ellos.

Aunque puede usar una propiedad estática.

class My_Class { 
    public static $DB_TABLE; 
} 
My_Class::$DB_TABLE = TABLE_PREFIX . 'class_table'; 

No puede hacerlo dentro de la declaración, por lo que es posible que prefiera un método estático.

class My_Class { 
    public static function dbTable() { 
    return TABLE_PREFIX . 'class_table'; 
    } 
} 
Cuestiones relacionadas