无法从类中调用外部变量

时间:2011-10-18 23:58:19

标签: php oop class

需要一些包含外部变量的帮助。

我有这个文件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

中的值

那么,如何在不通过函数获取数组的情况下获取数组?

感谢您的帮助!

1 个答案:

答案 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
    }
}