从阿贾克斯

从阿贾克斯

问题描述:

获取父类的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; 
+0

谢谢我认为它很棒!我刚刚得到注意:未定义的属性:get_data :: $ lang在其他类中,我有$ this-> lang,$ this-> status,但我想我应该用self :: lang替换所有那些和self :: status,对吧? – supadema 2014-09-05 04:41:25

+0

是的。通过** self :: **所必需的静态属性 – 2014-09-05 04:45:28

写下面的成员函数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');