PHP константы в классах - PullRequest
0 голосов
/ 23 мая 2011

У меня есть следующий пример кода, который выдает ошибку с включенной константой при запуске. Может кто-нибудь показать мне, где это не так?

class Template {
  private $headers = "<link rel=\"stylesheet\" type=\"text/css\" 
  href=\"" . ROOT . "system/stylesheets/universal.css\" />";

  ... More variables and methods
}

Вот ошибка, которую я получаю. Я уверен, что константа ROOT определена только за пределами этого класса:

Parse error: syntax error, unexpected '.', expecting ',' or ';' in <page.php> on line <line number>

Спасибо, что уделили время,
spryno724

1 Ответ

3 голосов
/ 23 мая 2011

Нельзя указывать нестатические значения в качестве значений по умолчанию для ваших членов.И вы пытаетесь выполнять динамические (во время выполнения) вещи - объединение строк.

class Template
{
    public static headers()
    {
        return '<link rel="stylesheet" type="text/css" href="' . ROOT . 'system/stylesheets/universal.css" />';
    }
}

Использование:

$headers = Template::headers()

Также - я пропустил, что вы используете только переменные экземпляра, не постоянные.В этом случае вы также можете использовать инициализацию в конструкторе:

class Template
{
    private $headers;

    public static __construct()
    {
        $this->headers = '<link rel="stylesheet" type="text/css" href="' . ROOT . 'system/stylesheets/universal.css" />';
    }
}
...