无法获取另一个php文件的变量

时间:2016-07-31 14:13:12

标签: php

我正在构建一个简单的多语言系统。我创建了一个名为Language的类,由我的控制器加载,该类非常简单:

class Language
{
    private $_langPath = null;

    function __construct()
    {
        $this->_langPath = 'languages/' . LANGUAGES . '/trans_mig.php';

        if(!file_exists($this->_langPath))
        {
           throw new exception("File not found: " . LANG);
        }
        else
        {
           include $this->_langPath;
        } 
    }

    public function line($key)
    {
        return $lang[$key];
    }
}

trans_mig.php内,我发现以下内容:

$lang['home'] = 'Home';
$lang['user'] = 'User';

但是当我这样做的时候:

$this->lang->line('user');

我收到以下错误:

  

注意:未定义的变量:lang

在我已包含trans_mig.php的文件中,我做错了什么?

1 个答案:

答案 0 :(得分:2)

public function line($key)
{
    return $lang[$key];
}

您没有在函数中定义$lang。因此,由于variable scope,它未在您的函数中定义。

您应该做的是在班级中定义$lang并从包含

中提取变量
class Language
{
    private $_langPath = null;
    /** @var array */
    protected $lang;

    function __construct()
    {
        $this->_langPath = 'languages/' . LANGUAGES . '/trans_mig.php';

        if(!file_exists($this->_langPath))
        {
           throw new exception("File not found: " . LANG);
        }
        else
        {
           include $this->_langPath;
        } 
        $this->lang = $lang;
    }

    public function line($key)
    {
        return $this->lang[$key];
    }
}