$this cakephp子函数的使用

$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

我搜索了stackoverflow,但什么也没找到

实际上,我正在重新编写一个由开发人员在CakePHP2.3框架中完成的“脏”代码

我自己不是开发人员,我更像一把瑞士刀,我会做一些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文档中搜索过,但也找不到任何东西

有人能帮忙吗


谢谢

这段代码最好是这样写的:-

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()中的数据时,您必须执行一些循环来检查数据库中的数据,并且必须多次执行此循环,与其重复代码,最好的方法应该是为我创建一个函数,或者我应该在邮件函数之外创建一个函数,并在需要时调用它?