2011-08-17 126 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