класс My_class { const STATUS_ERROR = 0; const STATUS_OK = 1; const DB_TABLE = TABLE_PREFIX. 'Class_table'; }
Два состояния consts работают нормально и могут быть доступны в методах класса, поскольку self::STATUS_ERROR
и self::STATUS_OK
просто отлично.
Проблема заключается в том, как остановить следующую ошибку, возникающую при попытке определить третью константу.
Parse error: syntax error, unexpected '.', expecting ',' or ';' in /home/sub/sub/directory/script.php
Вы этого не сделаете. Константы постоянны. Вы ничего не можете хранить в них.
Однако вы можете использовать статическое свойство.
class My_Class { public static $DB_TABLE; } My_Class::$DB_TABLE = TABLE_PREFIX . 'class_table';
Вы не можете сделать это в декларации, поэтому вместо этого вы можете предпочесть статический метод.
class My_Class { public static function dbTable() { return TABLE_PREFIX . 'class_table'; } }
константа должна быть определена с постоянным значением, они не могут быть результатом выражения
http://www.phpbuilder.com/manual/en/language.oop5.constants.php