Я хотел бы инициализировать элемент класса 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; }