从阿贾克斯
问题描述:
获取父类的PHP变量我已经在以下类别:从阿贾克斯
- 抽象类
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。
答
试试:
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;
答
写下面的成员函数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');
谢谢我认为它很棒!我刚刚得到注意:未定义的属性:get_data :: $ lang在其他类中,我有$ this-> lang,$ this-> status,但我想我应该用self :: lang替换所有那些和self :: status,对吧? – supadema 2014-09-05 04:41:25
是的。通过** self :: **所必需的静态属性 – 2014-09-05 04:45:28