我可以在控制器中使用全局变量吗


Can I use a global variable in my controller

你好,我是Phalcon的新手,在控制器中遇到全局变量问题
我有一个全局变量为$mobs的控制器,就是它

class ControllerBase extends Controller {
public $mobs;
public function initialize() {
    $user = $this -> session -> get("uid");
    $user = Users::findFirstByu_id($user);
    if ($user != null) {
        if ($user -> f_id != null) {
            $mobs = Mob::find(array("f_id=$user->f_id", "order" => "m_id"));
        }
    }
}
}
?>

根据我的理解,我可以设置这个并从一个动作中调用它,例如

public function mobsAction() {
  foreach ($mobs as $mob) {
    echo $mob->m_displayname;
  }
}

但这给了我一个Undefined variable: mobs error

我想知道是否可以使用这样的变量,或者我是否应该在每个操作中都有初始化代码。

我猜你试图在initialize函数中设置类变量$mobs,然后在类函数mobsAction中尝试迭代它们,要访问类变量mobs,你需要使用$this->mobs而不是$mobs

class ControllerBase extends Controller {
  public $mobs;
  public function initialize() {
      $user = $this -> session -> get("uid");
      $user = Users::findFirstByu_id($user);
      if ($user != null) {
          if ($user -> f_id != null) {
              $this->mobs = Mob::find(array("f_id=$user->f_id", "order" => "m_id"));
          }
      }
  }
  public function mobsAction() {
    foreach ($this->mobs as $mob) {
      echo $mob->m_displayname;
    }
  }
}