2011-08-03 121 views
0

我有一個模板類,它是這樣的:傳遞變量包含的文件

class Template{ 
public $pageTitle = ""; 
public function __construct($pageTitle){ 
    $this->pageTitle = $pageTitle; 
} 

public function display(){ 
    include "/includes/head.php"; 
    include "/includes/body.php"; 
} 
} 

現在,我已經習慣了Java的運作,但我不明白爲什麼我得到一個未定義的變量( $ pageTitle)錯誤。包含的文件需要能夠訪問該變量。我知道這將會非常簡單,但我實際上並未發現原因。 我需要做些什麼來允許包括看到這個變量?

+0

你是在這些文件中創建了你的班還是在創建班之後? – Grigor

回答

5

該包括也將不得不使用$this->pageTitle。有效地,include使它們成爲方法體的一部分。

3

包含的文件與您的對象的生活範圍相同。所以你需要撥打:

$this->pageTitle 
0

PHP中的範圍與java中的稍有不同。 針對您的特殊情況下,你需要

$this->pageTitle 

訪問類之外聲明的變量,你需要使它全球

global $myVar; 
+0

-1使用全局內類 – Subdigger

+0

我沒有在課堂上使用全局變量...我只是指出了一個事實... geez人真的濫用downvote按鈕,不是嗎? –

1

如果你不想做整個$ this->,你可以做類似下面的事情......提取函數將數組$ this-> data提取到名稱與每個項目的鍵/索引相關的變量中。所以現在你可以做echo $ pageTitle;

class Template{ 
    public $data = Array(); 

    public function __construct($pageTitle){ 
     $this->data['pageTitle'] = $pageTitle; 
    } 

    public function display(){ 
     extract($this->data); 
     include "/includes/head.php"; 
     include "/includes/body.php"; 
    } 
}