2011-08-17 127 views
2

表达式(连接字符串)类的成员变量,我想通过连接字符串初始化使用expression-类成员无功...为什么是以下不可能......初始化与PHP

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

回答

5

那么,因为这就是PHP的工作原理。

在PHP中静态初始化的变量(方法以外的任何内容)可以分配给静态值,但不能分配给需要函数调用的任何内容(array除外)。你可以通过在构造函数中放置初始化来解决这个问题。

此外,您应该使用self :: COMPANY_NAME或aClass :: COMPANY_NAME,var自PHP 4以来已过时。使用public/protected/private(在适当情况下为static)。

+0

谢谢。还要感谢其他PHP建议... – Prembo

2

因为类属性/常量的值不能是表达式。为了这些目的使用构造函数。

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

感谢您的回答和代码示例。 – Prembo