2017-06-20 75 views
1

我有一个简单的API类与它的基于Web的对口交谈。 所有工作正常,只有一个变量否认保存。php类不存储变量

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

class Api { 

    private $scope; 

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

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

} 

接下来,我通过从web脚本API 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; 
} 
+0

http://stackoverflow.com/help/mcve – Evert

+0

我想知道你为什么在设置它时序列化了这个值,在获取它的时候反序列化了。这不是多余的吗? – deceze

+0

我试图用各种方法来保存它,但是即使使用'$ this-> scope'也不会保存该值,我不知道为什么 –

回答

1

get_scope方法是私有的(因此不能从自身之外的称呼)。

使get_scope方法公开并且将返回该值。

+0

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

0

您的get_scope()函数声明为private。要在课堂以外使用它,您应该将其更改为公开。