2011-08-03 117 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"; 
    } 
}