2015-06-21 76 views
0

在類中,我有一個方法從外部文件中讀取一些變量。然後使用這些包含的變量設置成員變量。但是,只要此方法完成,成員變量就會重置爲空。我究竟做錯了什麼?PHP包含文件變量丟失範圍

main.php

$bob = new Object(); 
$bob->init(); 
echo $bob->value; 

Object.php

public function init() { 
include('/includefile.inc'); 
$this->value = $included_value; 
echo $this->value; 
} 

includefile.inc

<? $included_value = 'Hello World'; ?> 

內Object.php回聲將正常工作,但迴音外主將爲空。 value是Object.php類定義中的一個公共變量。

+0

你想返回函數中的值,而不是回顯它 – 2015-06-21 20:59:02

+0

兩者都應該回聲完美。 – Anonymous

+0

我不需要退還它;它被分配給一個類變量。這就是$ this-> value = $ included_value應該做的,對吧? –

回答

0

直接從手動引...

當包括一個文件,它包含的代碼繼承在其上包括髮生線的可變範圍。從調用文件的那一行可用的任何變量將在被調用的文件中可用,從這一點開始。但是,包含文件中定義的所有函數和類都具有全局範圍。

因此....

public function init() { 
$included_value=false; 
include('/includefile.inc'); 
$this->value = $included_value; 
echo $this->value; 
} 

像您期望的應該工作。

+0

是的,但我使用對象引用調用init()之外的echo。所以,echo $ object-> value。 –

+0

變量'$ included_value' *在包含語句之前未被引用*因此*在調用include時不存在*。 – symcbean

+0

變量'$ included_value'位於包含文件中。 –