Инициализация переменных-членов класса с помощью выражений (конкатенированная строка) в PHP

Я хотел бы инициализировать элемент класса var, используя выражение, путем конкатенации строки … Почему следующее невозможно …

class aClass { const COMPANY_NAME = "A Company"; var $COPYRIGHT_TEXT = "Copyright © 2011 " . COMPANY_NAME; // syntax error on this line - why? var $COPYRIGHT_TEXT2 = "Copyright © 2011 " . "A Company"; // even a syntax error on this line } 

Большое спасибо за вашу помощь.

Prembo

Хорошо, потому что так работает PHP.

Переменные, инициализированные статически в PHP (что-либо вне метода), могут быть назначены статическим значениям, но они не могут быть привязаны ко всему, что требует вызова функции (кроме array ). вы можете обойти это, поместив инициализации в конструктор.

Кроме того, вы должны использовать либо self :: COMPANY_NAME, либо aClass :: COMPANY_NAME, а var не в стиле с PHP 4. Используйте public / protected / private (и, при необходимости, статические).

Поскольку значение свойства / константы класса не может быть выражением. Используйте конструктор для этих целей.

 public function __construct() { $this->COPYRIGHT_TEXT = "Copyright © 2011 " . self::COMPANY_NAME; } 

FYI, почерпнутый из переменных статической функции и конкатенации в PHP, вы также можете использовать определение как в:

 define('THING', 'foo' . 'bar'); class Thing { static $MyVar = THING; }