класс 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