【问题标题】:php class not saving variable [closed]php类不保存变量[关闭]
【发布时间】:2017-06-20 14:01:42
【问题描述】:

我有一个简单的 API 类,可以与其基于 Web 的对应物进行对话。 一切正常,只有一个变量拒绝保存。

我有一个名为 $scope 的变量,在类的顶部初始化:

class Api {

    private $scope;

    public function set_scope( $s ) {
        $this->scope = serialize($s);
        return true;
    }

    private function get_scope() {
        return unserialize($this->scope);
    }

}

接下来,我通过 API 从 Web 脚本获取范围为 JSON,我将其 json_decode 为一个数组(第二个参数为 true),并以这种形式,通过 set_scope() 函数传递它。

我 10000000% 确定 API 返回 JSON,当 var_dump'ed 时它返回正确的数组数据。

但由于某种原因,该数据并未保存到 $scope 变量中。

有什么想法吗?

编辑#1:

我在类中调用函数get_scope,在另一个函数中。我试图直接设置该变量,所以只使用$this->scope=$scope,但没有成功。我使用相同的结构化函数来保存/获取其他变量,除了这个之外,它们都在工作。

其他功能如下:

public function get_modules() {

    $av_modules = $this->available_modules;
    $scope = $this->get_scope();

    var_dump($scope);

    foreach($scope as $mod) {
        $av_modules[$mod] = true;
    }

    return $av_modules;
}

【问题讨论】:

  • 我想知道为什么你在设置它的时候serialize这个值,而在获取它的时候unserialize。这不是多余的吗?
  • 我正在尝试各种方法来保存它,但即使使用$this->scope 也无法保存值,我不知道为什么

标签: php arrays json class


【解决方案1】:

get_scope 方法是私有的(因此不能从外部调用)。

get_scope方法设为public,返回值。

【讨论】:

  • 我在类中的另一个函数中调用该函数get_scope。我试图直接设置该变量,所以只使用$this->scope=$scope,但没有成功。我使用相同的结构化函数来保存/获取其他变量,除了这个之外,它们都在工作。
【解决方案2】:

您的 get_scope() 函数被声明为私有。要在课堂外使用它,您应该将其更改为 public。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2013-02-22
    • 2018-11-17
    • 1970-01-01
    相关资源
    最近更新 更多