我有两个文件: index.php 和 load.php (是一个类)。
我目前正在管理这些语言。在 index.php 中,我用这种方式调用语言:
include_once('load.php');
$load = new load();
include_once($load->language());
然后我可以简单地使用:
echo $lang['name'];
echo $lang['address']; //etc
我的问题是..我如何在班级 load.php 中使用它? 到目前为止我已经尝试过了:
include_once($this->language());
$lang['name'];
retrieves: Notice: Undefined variable: lang
$yo = include_once($this->language());
// retrieves $yo = bool(true) -> but I can't get info from the variable $yo
函数 language()仅根据Cookie检索正确的文件。
$content = 'languages/en.php';
// or
$content = 'languages/fr.php';
return $content;
编辑:更清楚:
语言/ en.php
$lang = array();
$lang['name'] = 'Your name:';
$lang['address'] = 'Your address:';
的index.php
include_once('load.php');
$load = new load();
include_once($load->language()); // $load->language() == 'languages/en.php';
echo $lang['name']; // works
echo $lang['address']; // works
load.php
public function display(){
include_once($this->language());
var_dump($this->lang) // returns NULL
var_dump($this->lang['name']) // returns NULL
// I call this function in index.php
}
我试过用:
return $lang
没有成功。
编辑2:查看@Saurabh Sinha的答案
你正在尝试的事情是不对的。你不能使用变量 除非在类中声明,否则在函数外声明。和 在你的情况下,$ lang变量是在类和函数之外。 你可以从索引文件中访问相同的文件,因为当 调用语言函数它给$ lang变量是索引文件 这不是一个班级
非常清楚,我加入了与他的聊天,我们得出结论,最好的选择是定义功能。
define('name', 'Your name:')
答案 0 :(得分:1)
如果我正确地理解了这个问题,我就会这样做。
如果在您的语言包中返回数据数组,则可以将其分配给类变量。
lang file
return array(
'name' => 'name',
'address' => 'address',
);
加载类
if (file_exists($path)) {
$this->lang = (include $path);
}
然后可以通过$load->lang['name'];
等访问语言包。当然,您应该在使用它之前初始化lang的类变量。
修改强>
如果你想从$ lang []访问langpack,你总是可以通过引用load方法传入该变量
public function loadLangPack(&$langRef) //& before variable means pass a reference
{
include_once($this->language());
$langRef = $lang;
}
这将允许你继续使用$ lang
的index.php
$lang = array();
$load = new Load();
$load->loadLangPack($lang);
echo $lang['name'];
echo $lang['address'];