-2

クラスで保護された変数を宣言した後、最初の関数で変数に値を代入します。そして、同じ変数を別の関数で値とともに使用したいと考えています。しかし、機能していません。誰かが私が間違っていること、またはこれを行うことが可能かどうか、またはどのように行うことができるかを教えてもらえますか? これが私のコードの例です:

class Forecast {
   protected $myStream;

   public function ajaxForecast() {
      $myStream = $GET_["selectedStream"];
      return json_enconde($myStream);
   }

   public function show() {
      echo $myStream;
   }

}
4

3 に答える 3

4

使用する必要があります

class Forecast {
    protected $myStream;

    public function ajaxForecast() {
        $this->myStream = $_GET["selectedStream"];
        return json_encode($this->myStream);
    }

    public function show() {
        echo $this->myStream;
    }
}

クラス内では常に $this ステートメントを使用してください。

于 2012-12-19T10:52:45.673 に答える
0

$thisキーワードを使用していません。$myStreamしたがって、あなたが思っているようにインスタンスフィールドに値を割り当てるのではなく、新しいローカル変数を作成しています。のスコープは$myStream関数 ajaxForecast に限定されており、それ以外では使用できません。のスコープは$this->myStream、オブジェクト自体 (およびサブクラス) 内にあります。

public function ajaxForecast() {
    $this->myStream = $GET_["selectedStream"];
    return json_enconde($myStream);
}

php.net より

疑似変数 $this は、メソッドがオブジェクト コンテキスト内から呼び出されたときに使用できます。$this は呼び出し元オブジェクトへの参照です (通常はメソッドが属するオブジェクトですが、メソッドがセカンダリ オブジェクトのコンテキストから静的に呼び出される場合は別のオブジェクトになる可能性があります)。

php oop に関するドキュメントはこちら

于 2012-12-19T10:41:49.127 に答える
0

マニュアルを読むことを強くお勧めします。

このように使用してください

public function Show() { 
   echo $this->myStream;
   // or use return $this->myStream
}
于 2012-12-19T10:42:06.963 に答える