2011-05-23 84 views
0

我有下面的代碼示例,它運行時會生成包含常量的錯誤。有人可以告訴我哪裏出錯了嗎?類中的常量

class Template { 
    private $headers = "<link rel=\"stylesheet\" type=\"text/css\" 
    href=\"" . ROOT . "system/stylesheets/universal.css\" />"; 

    ... More variables and methods 
} 

這是我收到的錯誤。我相信這根常量定義,正好在這座類:

Parse error: syntax error, unexpected '.', expecting ',' or ';' in <page.php> on line <line number> 

謝謝您的時間,
spryno724

回答

3

不能指定非靜態值作爲成員的默認值。你正在嘗試執行動態(運行時)的東西 - 串聯字符串。

class Template 
{ 
    public static headers() 
    { 
     return '<link rel="stylesheet" type="text/css" href="' . ROOT . 'system/stylesheets/universal.css" />'; 
    } 
} 

用法:

$headers = Template::headers() 

而且 - 我錯過了,你只用實例變量,而不能是常量。在這種情況下,你也可以在構造函數中使用初始化:

class Template 
{ 
    private $headers; 

    public static __construct() 
    { 
     $this->headers = '<link rel="stylesheet" type="text/css" href="' . ROOT . 'system/stylesheets/universal.css" />'; 
    } 
} 
+0

嗯...那麼你推薦作爲一種工作? – 2011-05-23 02:26:47

+0

@ spryno724:靜態類方法? – zerkms 2011-05-23 02:27:40

+0

一個例子會很棒 – Ibu 2011-05-23 02:32:26