-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 回答