Cakephp无法将值表单子函数返回到父函数

时间:2017-10-18 14:27:34

标签: cakephp

我从递归函数返回一个值时遇到一个问题,除了返回一些我在另一个函数中返回的值,EX:如果我在test3函数中打印了一个值,它打印出来并且它的返回父函数test2在这里也打印了返回值,但是当我在主函数test1中打印时,它不打印为什么它的行为是这样的?

我试过以下代码:

class TestController extends AppController {
   public function beforeFilter() {
        parent::beforeFilter();
        ---------#code
   }
   public function test1(){
       $parm1 = $_POST['val1'];
       $parm2 = $_POST['val2'];
       $res = $this->test2($parm1,$parm2);
       pr($res);
   }
   private function test2($parm1,$parm2){
       #calculations
       if(condition){
           #$parm2 value increment
           $this->test2($parm1,$parm2);               
       }else{
           $valf =  $this->test3($parm1,$parm2);
           #here I print $valf it's printed but it's not return a value
           return $valf ;
       } 
   }
   private function test3($parm1,$parm2){
       #calculations
       if(condition){  
           $val = somevalue;
           return $val;
       }else{
           return false;
       } 
   }
}

1 个答案:

答案 0 :(得分:0)

我认为你应该在这里使用return

   private function test2($parm1,$parm2){
       if(condition){
           return $this->test2($parm1,$parm2);  // Here             
       }else{
           $valf =  $this->test3($parm1,$parm2);
           return $valf ;
       } 
   }

顺便说一下,我认为在控制器内部执行递归方法不是“MVC方式”。在CakePHP中您可以使用Component