我是以下课程:
utility
,包含常规函数(例如数据库连接)get_conf
,它返回几乎所有地方都需要的主要变量(例如语言,登录状态)get_data
来处理对数据库的查询并返回结果。这是在我的索引文件中:
$init = new get_conf();
$lang = $init->lang;
$status = $init->status;
(...)
$config = new get_data($lang,$status);
这是类get_data
的构造。
class get_data extends utility {
public function __construct($lang = NULL,$status = NULL) {
$this->lang = $lang;
$this->status = $status;
}
...
一切正常,但我不知道在ajax通话期间最好如何处理。 在实例化我需要的类之后,
$config = new get_data();
获取$lang
和$status
的最佳方式是什么?目前,我再次调用定义其值的函数 - get_language()
,check_login()
。
但还有更好的方法吗?我应该使用会话吗?每当这些功能发生时,我都不会打电话,特别是当我在同一页面中有多个ajax调用时。
编辑:对不起,我的错是因为我以错误的方式提出了问题。我需要的是从Ajax获取变量并确定,但我需要在类中使用它们例如,在课程get_data
中我有这个功能:
public function get_category($id_cat) {
$q = "SELECT category FROM p_category WHERE id = '".$id_cat."' AND code = ".$this->lang.";
return $this->exe_query($q);
}
因为我从Ajax调用此函数而不是,根据情况,$this->lang
仅在我从Ajax请求中调用它时才定义。即使使用静态var也无法使用Ajax。
答案 0 :(得分:1)
在get_data类中编写以下成员函数:
public function getCVar($var){
$c = new get_data();
eval('$tmp = $c->'.strtolower($var).';');
return $tmp;
}
然后你可以得到如下变量值:
echo get_data::getCVar('lang');
echo get_data::getCVar('status');
答案 1 :(得分:0)
试一试:
class get_data extends utility {
static $lang = null;
static $status = null;
public function __construct($lang = NULL,$status = NULL) {
if($lang !== null){
self::$lang = $lang;
}
if($status !== null){
self::$status = $status;
}
}
}
$config = new get_data($lang,$status);
echo get_data::$status;
echo get_data::$lang;