2011-03-08 95 views
0

在PHP中,是否有可能,我可以停止从内部功能的功能?例如从另一个功能回采功能

function_1(){ 
    ...... 
function2(); 
.... 
} 

我可以停止功能1使用函数2句子,但避免回采全脚本???

非常感谢!

+0

当你说“停止”时,你能解释一下你的意思吗? – Charles 2011-03-08 03:41:57

+0

像“返回false”,但我不能把返回function2();停止执行。 – 2011-03-08 03:42:52

+0

如果你将它作为验证或验证的一部分,你可以抛出一个异常并且有一些外部函数来捕获它。 – Thai 2011-03-08 03:50:21

回答

4

如果捕获第二个函数的返回值,则可以执行此操作。

function my_first_function() { 
    // some code 
    if(!my_second_function()) { 
    return; 
    } 
} 

function my_second_function() { 
    return false; 
} 

my_first_function(); 

当然,您需要对其进行修改以满足您的需求,但这应该让您开始。

+0

这是问题所在,我无法修改结构,我只能插入函数。 – 2011-03-08 03:48:47

+1

如果你不能改变代码,那么你不能做你想做的事情。 – Charles 2011-03-08 03:52:38

+0

我看,看看goto运算符(http://us.php.net/goto)。我从来没有使用过它,我不推荐使用它,因为我相信如果你最终使用它,你的代码可能没有正确设计,但这可能是你正在寻找的。是否有一个原因,你只能添加功能,而不是修改代码? – philhq 2011-03-08 03:56:44

0

您可以使用RunKit extension,它允许您重新定义/重命名函数。默认情况下,它只允许在用户定义的函数上完成这项工作,但是还有一个php.ini设置可以使其用于内部函数。

,将让你做这样的事情:

runkit_function_rename('print', 'internal_print'); 
function print(...) { 
    echo 'welcome to my own implementation of print'; 
} 

然而,内部功能搞乱基本上可以打破PHP,所以在你自己的风险。

+0

这就是我需要的,但问题是,并非所有的erver都有PECL! – 2011-03-08 04:02:31

+1

虽然它只是唯一实用的选择。如果你需要禁用这样的功能,那么你应该重新考虑你的安全模型。 – 2011-03-08 04:07:59