【问题标题】:Get variables of parent class php from Ajax从ajax获取父类php的变量
【发布时间】:2014-09-05 04:18:24
【问题描述】:

我有以下课程:

  • 抽象类utility,包含通用功能(如数据库连接)
  • class 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 调用此函数,而不是从 Ajax 调用此函数,根据情况,$this->lang 仅在我从 Ajax 请求中调用它时才定义。即使使用静态 var 也不适用于 Ajax。

【问题讨论】:

    标签: php ajax


    【解决方案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');

    【讨论】:

      【解决方案2】:

      试试看:

      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::$lang 在类的其余部分中我有 $this->lang、$this->status,但我想我应该用 self::lang 替换所有这些还有self::status,对吧?
      • 是的。通过 self :: 引起的静态属性
      猜你喜欢
      • 2014-09-15
      • 1970-01-01
      • 2014-12-16
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多