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

Php 我可以在控制器中使用全局变量吗,php,phalcon,Php,Phalcon,你好,我是Phalcon的新手,在控制器中使用全局变量时遇到问题。 我有一个带有全局变量的控制器$mobs,就是它 class ControllerBase extends Controller { public $mobs; public function initialize() { $user = $this -> session -> get("uid"); $user = Users::findFirstByu_id($user); if ($us

你好,我是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;
  }
}
但这给了我一个
未定义的变量: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;
    }
  }
}

您可以使用类中的任何位置的
$this
伪变量访问
$mobs
。像
$this->mobs
。阅读更多关于这部作品的信息。我在发布之前尝试过这个,但得到一个错误
无法访问空的属性mobs
。我的错误是使用
$this->$mobs=$stuff
而不是
$this->mobs=$stuff