Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法从类内部调用外部变量_Php_Oop_Class - Fatal编程技术网

Php 无法从类内部调用外部变量

Php 无法从类内部调用外部变量,php,oop,class,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 $th

在包含外部变量方面需要一些帮助

我有这个文件
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() {}
}
语言文件包含在
\u构造()中。

这个文件
en.php
包含一个数组

$LangArray = array(
    "home" => "Home",
    "news" => "News",
    "info" => "Info"
);
该类由以下命令调用:
$Lang->Translate('home')

这将不返回任何内容,但如果我执行此操作,
$Lang->Translate('home',$LangArray)
,它将从数组键
home
返回值

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


谢谢你的帮助

当您使用
require\u*
include\u*
时,请考虑这样一种情况,即所包含文件中的代码只需粘贴,而不是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
    }
}
class语言{
private$LangArray;//LangArray=$LangArray;//LangArray[$String]//