2017-06-20 6 views
1

私はWebベースのカウンターパートと会話する簡単なAPIクラスを持っています。 すべて正常に動作し、1つの変数だけが保存されることを拒否します。変数を保存していないphpクラス

私はクラスの先頭に初期化$スコープと呼ばれる変数、持っている:私は、JSONなどのWebスクリプトからAPI経由でスコープを取得しています

class Api { 

    private $scope; 

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

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

} 

次に、私は(配列としてそれをjson_decode 2番目のパラメータをtrueとします)、その形式でset_scope()関数に渡します。

私は10000000%のAPIがJSONを返すことを確かめています。var_dumpを実行すると、適切な配列データが返されます。

何らかの理由で、そのデータは$ 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

私はあなたがそれを設定するときに値を 'serializeする 'と、値を取得するときに' unserialize'するのはなぜでしょうか。それはむしろ余計なことではありませんか? – deceze

+0

私はそれを保存する様々な方法を試していますが、 '$ this-> scope'を使っても値を保存することはできません。なぜ –

答えて

1

get_scopeメソッドがプライベートである(これ自体の外から呼び出すことはできません)。

get_scopeメソッドをpublicにして、値を返します。

+0

私はその関数を' get_scope'という別の関数で呼び出します。私はその変数を直接設定しようとしていたので、 '$ this-> scope = $ scope'だけを使っても成功しませんでした。私は他の変数を保存/取得するために同じ構造化関数を使用しますが、これ以外はすべてが機能しています。 –

0

get_scope()関数はprivateとして宣言されています。クラス外で使用するには、それをpublicに変更する必要があります。

関連する問題