我想做的是以下内容:
我有一个名为“控制”的模型:
class Control extends AppModel {
var $name = 'Control';
var $myVariable:
function getMyVariable() {
$this->$myVariable = 'hello';
return ($this->$myVariable);
}
function getMyVariable2() {
$myVariable2 = 'hello';
return ($myVariable2);
}
}
然后,从另一个控制器我做:
class TestsController extends AppController {
var $name = 'Tests';
var $uses = array('Test','Control');
function index() { //whatever }
function doStuff() {
$aux = $this->Control->getMyVariable(); //not working, variable not declared
$aux2 = $this->Control->getMyVariable2(); //works
}
我假设(可能是错误的)我可以将模型类中的变量声明为属性(或属性),就像在任何其他OO语言中一样,并从应用程序的其他位置访问它,但我想它不会在CakePHP中像这样工作。我错过了什么吗?有没有其他方法可以做到这一点?我的意思是,在模型中有一个变量(哪个内容不是来自表)并从其他控制器/视图中访问它?
答案 0 :(得分:2)
$this->$myVariable
是“变量变量”的语法(或者在本例中为变量属性)。正确的语法是$this->myVariable
。 CakePHP不会改变PHP OOP的the basics。
在getter中设置变量非常奇怪,你不应该这样做
此外,如果您使用的是getter,则应该设置属性protected
或private
,否则它会毫无意义。