我想使用表达式初始化类成员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
答案 0 :(得分:5)
好吧,因为这就是PHP的工作方式。
在PHP中静态初始化的变量(方法之外的任何东西)可以分配给静态值,但不能将它们分配给需要函数调用的任何东西(array
除外)。你可以通过在构造函数中放置初始化来解决这个问题。
此外,您应该使用self :: COMPANY_NAME或aClass :: COMPANY_NAME,并且自{4}以来var
已经过时了。使用public / protected / private(以及适当的静态)。
答案 1 :(得分:3)
因为类属性/常量的值不能表达式。使用构造函数来实现这些目的。
public function __construct() {
$this->COPYRIGHT_TEXT = "Copyright © 2011 " . self::COMPANY_NAME;
}
答案 2 :(得分:1)
仅供参考,从Static Function Variables and Concatenation in PHP收集,您也可以使用define in:
define('THING', 'foo' . 'bar');
class Thing {
static $MyVar = THING;
}