在PHP中使用表达式(连接字符串)初始化类成员变量

时间:2011-08-17 06:09:39

标签: 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

3 个答案:

答案 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;
}