2015-03-30 31 views
1

继承人的问题如何从嵌套函数中分解循环?

public function loop(){ 
    while($this->controlFunction()){ 
     //do stuff 
    } 
} 
public function controlFunction(){ 
    $this->nestedFunction(); 
} 

public function nestedFunction(){ 
    if($condA){ //whatsoever the condition 
     break; 
    } 
} 

这可能吗?我不想回,然后用一个标志,再次返回,好像意大利面条代码

感谢您的回答家伙,思想后,我的问题似乎很愚蠢,但...反正谢谢:)

+1

易于测试。你有吗? – 2015-03-30 20:45:27

+0

是的。错误是,不能打破/继续1级 – delmalki 2015-03-30 20:48:16

+0

听起来像你的'主要'功能需要调用这个功能,然后 – 2015-03-30 20:51:03

回答

1

有无你试过了吗?无论如何,返回值是澄清函数应该做的更好的方法。你应该总是试着让功能独立,这是很好的做法。

2

the documentation

break ends execution of the current for, foreach, while, do-while or switch structure 

为调用函数的变化范围内,break声明将对以前的范围内执行while -loop没有影响。

事实上,由于范围比nestedFunction方法不同,调用break将导致致命错误(E_ERROR),因为该范围是不知道在以前的范围内运行while -loop的。

Fatal error: Cannot break/continue 1 level 

所以不行,这是不可能的。