需要一些包含外部变量的帮助。
我有这个文件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
那么,如何在不通过函数获取数组的情况下获取数组?
感谢您的帮助!
答案 0 :(得分: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
}
}