如何在yii中生成全局变量


how to make a global variable in yii

我正在学习Yii,我想问一个基本问题。我有一个控制器,控制器中有两个动作,如下

class MyappController extends Controller
{
public $count=0;
public function actionInitialCount()
{
$this->count=1;
$this->redirect('secondCount');
}
public function actionSecondCount()
{
echo $this->count;
}
} 

现在我想要的是,当InitialCount操作将$count变量修改为1时。secondCount以回显它CCD_ 1。但它只将其作为0。那么,我如何实现这一任务呢?如果一个操作修改了一个变量,那么我就可以在第二个操作中获得修改后的值

我认为,您正在考虑应用程序的两个生命周期之间的共同变量。这只有在使用$_SESSION或其他持久变量时才可能实现。我希望你能理解这一点。

在控制器功能方面,您必须使用计数变量作为

$this->计数

因此,完整的代码将是:

类MyappController扩展控制器{

public$count=0;

公共函数actionInitialCount()

$this->重定向('secondCount');

}

公共函数actionSecondCount()

echo$this->计数

}

}

认为我有一个类

class AController extends MyController{
    //can be accessed here(even in the view) using $this->publicvariable
}

我说这是组件

class MyController extends CController{
    //My public variable is declared here 
}

现在我举不同的例子。

示例1

这是一个简单的PHP程序示例。

class MyappController  {
  public $count = 0;
  function InitialCount() {
      $this->count = 1;
  }
  function SecondCount() {
      print $this->count;
  }
}
$ob = new MyappController();
$ob->InitialCount();
$ob->SecondCount();

示例2

以上是相同的程序,但在Yii。

class MyappController extends Controller
{
    public $count=0;
    function __construct() {
        $this->count = 7 + 8 ; 
    }

    public function actionIndex()
    {
        echo $this->count ;
    }
    public function actionInitialCount()
    {
        echo $this->count=1;
    }
    public function actionSecondCount()
    {
        echo $this->count ;
    }
}

示例3

我们可以通过在类外访问它来更改值。

class MyTest
{
    protected $a;
    public function __construct($a)
    {
        $this->a = $a;
    }
    public function head()
    {
        echo $this->a;
    }
    public function footer()
    {
        echo $this->a;
    }
}
$a = 7;
$obj = new MyTest($a);
echo $obj->head();

实际上,当您修改变量值时,您需要声明它,正如我在第一个示例中所声明的那样,然后您可以获得更改后的值。其次,就像在电子商务应用程序中一样,当我们购买不同的商品时,它会显示每个商品的修改值,因此可以通过在服务器上存储信息的会话变量访问它。如果你需要在Yii中修改后的值并将其显示在视图上,这样你就可以阅读Yii会话,然后你就可以满足你的要求。在我的Yii示例中,如果您将其重定向到视图,那么它将生成错误,因为我创建了Constructor。

希望它能帮助你理解。

谢谢。

你能不能不使用Yii::app()->session['count']来计算一个会话?现在发生的情况是,当您调用actionInitialCount并再次调用actionSecondCount时,类正在被加载,因此$count将被设置回0。