Tôi đã cố gắng khai báo một biến toàn cục trong yii là boolean và có giá trị thay đổi trong các hàm hành động khác nhau trong bộ điều khiển. Dưới đây là một ví dụ về những gì tôi đang cố gắng đạt được.khai báo các biến toàn cầu trong yii và sử dụng chúng trong bộ điều khiển
trong .../config/main.php i thêm các mảng sau: 'params' => array ('đăng nhập' => 'true',),
trong .../bảo vệ/controller/testController.php tôi đã thêm đoạn mã sau:
<?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
}
Làm thế nào tôi có thể đạt được điều này mà không phải gán giá trị trong mỗi hàm cho biến toàn cầu? Nếu tôi gọi hàm thứ hai, nó ném một lỗi rằng x không được định nghĩa. Kế hoạch của tôi là sử dụng biến toàn cầu theo cách bạn làm trong java, v.d.
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?
Điều tốt nhất là không sử dụng biến toàn cục. Sử dụng tốt hơn các biến lớp ('$ this-> login') hoặc các biến session (' Yii :: app() -> session ['login'] = true'). – kachar
Khung công tác không thực thi cả 'actionDisplay' và' actionDisplay2' cùng một lúc. Nó chỉ chạy một hành động cho mỗi yêu cầu trong trường hợp bình thường. Bạn có thể thêm mã sẽ được sử dụng lại trong phương thức 'beforeAction ($ action)'. – kachar
Hi Katchar, sau đó bạn có thể chỉ cho tôi một ví dụ ngắn gọn làm sao tôi có thể sử dụng các biến lớp trong bộ điều khiển để đạt được những gì tôi kiến để đạt được như được giải thích ở trên và bên dưới trong các bình luận của tôi? –