使用$ this cakephp子功能

时间:2017-05-10 09:40:51

标签: php function cakephp this

我已经对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文档中搜索过,但也找不到任何东西。

有人可以帮忙吗?

感谢

3 个答案:

答案 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();

}

感谢所有人,它完美而且比以前更好。