PHP调用函数在同一个类(另一个文件)中

时间:2014-01-21 10:56:05

标签: php

我有两个文件: 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:')

1 个答案:

答案 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'];