2011-10-18 17 views
0

需要一些幫助來包含外部變量。無法從類內調用外部變量

我有這個文件lang.class.php

class Lang { 
    public $DefaultLang = 'en'; 

    public function __construct() { 
     require_once($_SERVER['DOCUMENT_ROOT'] . "/system/lang/en.php"); 
    } 

    public function MainLang() { 
     return $this->DefaultLang; 
    } 

    public function Translate($String, $Array = "") { 
     if($Array != '') 
      $LangArray = $Array; 

     echo $LangArray[$String]; 
    } 

    public function __destruct() {} 
} 

語言文件包含在__construct()

而這個文件en.php持有數組

$LangArray = array(
    "home" => "Home", 
    "news" => "News", 
    "info" => "Info" 
); 

類是由這家名爲: $Lang->Translate('home')

這將返回不算什麼,但如果我這樣做$Lang->Translate('home', $LangArray),它從array_key home

所以返回值,我怎麼能得到的陣列,而不通過功能得到它?

感謝您的幫助!

回答

2

當您使用require_*include_*時,請考慮如果包含文件中的代碼只是簡單地粘貼而不是include指令。因此,如果包含該文件,則會有一個名爲$LangArray的變量。你可以接受這個變量並將它分配給該類中的一個私有屬性,然後使用它。

class Lang { 
    private $LangArray; // <- store the array in a private property 

    public function __construct() { 
     require_once($_SERVER['DOCUMENT_ROOT'] . "/system/lang/en.php"); 
     $this->LangArray = $LangArray; // <- assign the loaded array 
    } 

    public function Translate($String) { 
     echo $this->LangArray[$String]; // <- use the loaded array 
    } 
} 
+0

謝謝,作品完美。 – NoobiCake