在cakePHP中声明全局变量的最佳方法是什么
我正在学习cakePHP 1.26。在cakePHP中声明全局变量的最佳方法是什么,php,oop,cakephp,cakephp-1.2,Php,Oop,Cakephp,Cakephp 1.2,我正在学习cakePHP 1.26。 我有一个控制器,它有两个功能。 我想将$myVariable设置为全局变量,以便控制器中的两个函数都可以共享它,但我不确定这是否是在cakePHP中声明全局变量的最佳方法: class TestingController extends AppController { var $myVariable="hi there"; function hello(){ if($newUser){echo $myVariable;}
我有一个控制器,它有两个功能。
我想将$myVariable设置为全局变量,以便控制器中的两个函数都可以共享它,但我不确定这是否是在cakePHP中声明全局变量的最佳方法:
class TestingController extends AppController {
var $myVariable="hi there";
function hello(){
if($newUser){echo $myVariable;}
}
function world(){
if($newUser=="old"){$myVariable="hi my friends";}
}
}
如果可以的话,请帮忙
编辑原因: 嗨,艾库勒 我对代码做了一些修改,并遵循了您的建议,但myVariable的值一点也没有改变:
class TestingController extends AppController {
var $myVariable="hi there";
function hello(){
echo $this->myVariable;
}
function world(){
$this->myVariable="hi my friends";
}
function whatValue(){
echo $this->myVariable; // still output "hi there"
}
}
(请注意,$newUser在调用方法时是未定义的)
您应该阅读以下内容:查看配置类。您可以配置::write('var',$value)或Configure::read('var'),这在应用程序的所有部分都可以访问,也就是说,您可以在AppController::beforeFind()中定义变量,当然,您可以在模型、视图和所有控制器中访问它
但对于您的情况,最好的答案是上面答案中描述的类变量。:) @Aircule。是{$this->myVariable;}还是{$this->$myVariable;}我需要在myVaraible之前添加一个美元符号?当你访问类变量或方法时,你使用
$this->myVariable
和$this->myFunction()
。你看过吗?@aircle。感谢您的帮助。请注意,这不是cakePHP特有的。这是PHP或任何OOP语言的基本特性。另外,我会在成员变量声明中使用“private”而不是“var”。为什么不使用最新版本的cake(1.3.2)?@aircle。我已经学习CakePHP1.26几个星期了,我对这个版本比较熟悉。这不是一个全局变量,而是一个类变量。如果您真的想要一个全局的in-cake,您可以使用Nik关于Configure的建议:
class TestingController extends AppController {
var $myVariable="hi there";
function hello(){
if($newUser){echo $this->myVariable;}
}
function world(){
if($newUser=="old"){$this->myVariable="hi my friends";}
}
}