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

Obie stany statusowe działają poprawnie i można uzyskać do nich dostęp w ramach metod klasy jako self::STATUS_ERROR i self::STATUS_OK.Jak mogę połączyć stałą i zmienną i zapisać ją w stałej klasy z PHP?

Problem polega na tym, jak zatrzymać następujący błąd podczas próby zdefiniowania trzeciej stałej.

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

+0

doszedłem również po drugiej stronie tej samej kwestii. Cóż, dla mnie jest to ograniczenie. Wymieniono tu również: http://bugs.php.net/bug.php?id=42355 –

+1

Powyższy błąd został przekształcony w dokument RFC, który został zatwierdzony do włączenia w wersji 5.6, w której ta możliwość jest już dostępna: https://wiki.php.net/rfc/const_scalar_exprs. –

Odpowiedz

9

Ty nie. Stałe są stałe. Nie możesz w nich niczego przechowywać.

Można jednak użyć właściwości statycznej.

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

Nie możesz tego zrobić w deklaracji, więc zamiast tego możesz wybrać metodę statyczną.

class My_Class { 
    public static function dbTable() { 
    return TABLE_PREFIX . 'class_table'; 
    } 
} 
Powiązane problemy