我已经对stackoverflow进行了搜索,但找不到任何内容。
实际上我正在努力在CakePHP 2.3框架中重新编写由dev开发的“脏”代码。
我自己不是一个开发者,我更像是一把瑞士刀,我做了一些PHP,但这通常不是我的日常任务。
:)
让我们回顾一下事实,我有一个带功能的控制器,以及这些功能下的一些功能......
前:
tool_controller.php
function addSomething(){
print_r($this->loadModel("db")); //it works // returns 1
function anotherFunction(){
print_r($this->loadModel("db")); //returns "Using $this when not in object context"
}
}
我有点迷失,在CakePHP文档中搜索过,但也找不到任何东西。
有人可以帮忙吗?
感谢
答案 0 :(得分:1)
这段代码很可能写得更好: -
public function addSomething(){
print_r($this->loadModel("db"));
$this->_anotherFunction();
}
protected function _anotherFunction(){
print_r($this->loadModel("db"));
}
我怀疑你真的需要为你想要实现的目标嵌套函数。上面的代码应该更易于阅读,并且更明显的是上下文$this
引用的内容。
答案 1 :(得分:0)
好的人,我已经解决了我的问题,正如我在主要功能是提交之后的动作之前所说的那样,然后我在这个函数中有一个循环来处理数据。
由于我在CakePHP中工作并使用集成函数(在本例中是“Controller”类中的函数“loadModel”),我必须在嵌套函数中使用此函数。
解决方案如下:
function addSomething(){
my_code_here
function anotherFunction(){
$controller = new Controller; // Had to redeclare the class
print_r($controller->loadModel("db")); // Works just fine
}
}
感谢所有人的提交。
亲切的问候人们;)
答案 2 :(得分:0)
之后你们很多人建议我不要嵌套功能,我决定按照你的建议,在我回调我的功能后,我已经在我的主要功能之外推出。
Public Function loopAction(){
//Code here
}
Public Function addsomething(){
//Code here
$this->loopAction();
}
感谢所有人,它完美而且比以前更好。