gpt4 book ai didi

php - 在 yii 中声明全局变量并在 Controller 中使用它们

转载 作者:可可西里 更新时间:2023-11-01 13:54:17 35 4
gpt4 key购买 nike

我一直在尝试在 yii 中声明一个全局变量,它是一个 boolean 值,并在 Controller 的不同 Action 函数中改变它的值。下面是我正在努力实现的一个例子。

在 .../config/main.php 中我添加了以下数组: 'params'=>array('login' => 'true',),

在 .../protected/controller/testController.php 我添加了以下代码:

<?php
class ApiController extends Controller{
public $x = '';

public function actionDisplay(){
$x=Yii::app()->params['login']; //so x now has the value "true"
echo $x; //this display "true" when i run this controller on this function
}

public function actionDisplay2(){
global $x;
echo $x; //this for some reason does not contain the value true even if x is global
}

我怎样才能做到这一点而不必在每个函数中为全局变量分配一个值?如果我调用第二个函数,它会抛出 x 未定义的错误。我的计划是像在 Java 中那样使用全局变量,例如

public class Display{

public String x = " ";

public static void Display(){
x = "True"; //global variable x is assigned the String value "True"
}

public static void DisplayTwo(){
System.out.print("Value of x is: " + x); //this will print "Value of x is: True"
}

....

}
So basically, this is how i want to use the global variable in Yii framework. Any suggestions how to achieve this please?

最佳答案

您可以使用类变量来实现,这是一个示例:

<?php

class ApiController extends Controller
{
public $lang = 'en';

public function beforeAction($action)
{
if(Yii::app()->session->contains('lang'))
$this->lang = Yii::app()->session['lang'];
return parent::beforeAction($action);
}

public function afterAction($action,$params)
{
Yii::app()->session['lang'] = $this->lang;
return parent::afterAction($action,$params);
}

public function actionDisplay(){
echo 'In Display action';
$this->lang = 'test'
echo $this->lang;
}

public function actionDisplay2(){
echo 'In Display2 action';
echo $this->lang;
}
}

关于php - 在 yii 中声明全局变量并在 Controller 中使用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23225685/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com