$this cakephp子函数的使用
我搜索了stackoverflow,但什么也没找到 实际上,我正在重新编写一个由开发人员在CakePHP2.3框架中完成的“脏”代码 我自己不是开发人员,我更像一把瑞士刀,我会做一些php,但这通常不是我的日常任务 :) 让我们来看看事实,我有一个带函数的控制器,在这些函数下有一些函数 例: tool_controller.php$this cakephp子函数的使用,php,function,cakephp,this,Php,Function,Cakephp,This,我搜索了stackoverflow,但什么也没找到 实际上,我正在重新编写一个由开发人员在CakePHP2.3框架中完成的“脏”代码 我自己不是开发人员,我更像一把瑞士刀,我会做一些php,但这通常不是我的日常任务 :) 让我们来看看事实,我有一个带函数的控制器,在这些函数下有一些函数 例: tool_controller.php function addSomething(){ print_r($this->loadModel("db")); //it works // retu
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文档中搜索过,但也找不到任何东西
有人能帮忙吗
谢谢这段代码最好是这样写的:-
public function addSomething(){
print_r($this->loadModel("db"));
$this->_anotherFunction();
}
protected function _anotherFunction(){
print_r($this->loadModel("db"));
}
我怀疑您是否真的需要为您想要实现的目标嵌套函数。上面的代码应该更易于阅读,并且更清楚地说明了上下文所指的内容。好的,各位,我已经解决了我的问题,正如我之前所说的,主函数是提交后的一个操作,然后我在这个函数中有一个循环来处理数据 当我在CakePHP中工作并使用集成函数(在本例中是“Controller”类中的函数“loadModel”)时,我必须让这个函数在嵌套函数中工作
Public Function loopAction(){
//Code here
}
Public Function addsomething(){
//Code here
$this->loopAction();
}
解决办法如下:
function addSomething(){
my_code_here
function anotherFunction(){
$controller = new Controller; // Had to redeclare the class
print_r($controller->loadModel("db")); // Works just fine
}
}
谢谢大家的意见
亲切地问候人们;) 在你们中的许多人建议我不要嵌套函数之后,我决定听从你们的建议,在我回调函数之后,我将其放在我的主函数之外
Public Function loopAction(){
//Code here
}
Public Function addsomething(){
//Code here
$this->loopAction();
}
感谢大家,它工作得非常完美,甚至比以前更好。为什么要嵌套函数?这在你的例子中毫无意义。将
anotherFunction
作为类的一个方法,或者如果您真的想这样做,则显示显示问题的完整(非工作)示例。目前我们不知道这些函数是如何被调用的,为什么要嵌套函数呢?函数应该相互声明为“紧挨着”或在类中声明为方法。我这样做是因为第一个函数是submit表单的结果,然后旧开发人员多次重复相同的代码,因此我创建了一个要回调的函数,而不是重复10次此代码,在我从CakePHP调用“loadModel”之前,一切都很好。这不是一个好主意,也不是CakePHP的工作方式。我非常怀疑你是否需要使用这样的嵌套PHP函数。那么你是说你从来没有嵌套过函数?除了使用闭包,我从来没有使用过嵌套函数,因为在编写面向对象代码(如CakePHP)时,PHP中不需要它们。嗯,假设您有一个表单页面,在提交时在控制器中调用函数addSomething(),在处理函数addSomething()中的数据时,您必须执行一些循环来检查数据库中的数据,并且必须多次执行此循环,与其重复代码,最好的方法应该是为我创建一个函数,或者我应该在邮件函数之外创建一个函数,并在需要时调用它?