如何在yii中创建一个全局变量

时间:2013-12-13 04:30:19

标签: php variables yii global-variables

我正在学习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 以回显它{{ 1}}。但它仅仅是as 1 and not 0。那么我怎样才能实现这个任务,如果一个动作修改一个变量,那么我可以在第二个动作中获得修改后的值

5 个答案:

答案 0 :(得分:1)

在控制器功能的一侧,你必须使用计数变量

  

$这 - >计数

所以,完整的代码将是:

  

类MyappController扩展Controller {

     

public $ count = 0;

     

公共职能actionInitialCount()

     

{

     

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

     

}

     

公共职能actionSecondCount()

     

{

     

echo $ this-> count;

     

}

     

}

答案 1 :(得分:1)

认为我有一个班级

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 
}

答案 2 :(得分:1)

现在我举了不同的例子。

示例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 Sessions,然后您就可以完成您的要求。 在我的Yii示例中,如果将其重定向到视图,那么它将生成错误,因为我已经创建了构造函数。

希望它能帮助您理解。

感谢。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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