Php 有什么方法可以从内部函数中退出外部函数?
在PHP中,如果我有一个函数调用另一个函数;有没有办法让被调用函数退出调用者函数而不终止整个脚本 例如,假设我有一些代码,比如:Php 有什么方法可以从内部函数中退出外部函数?,php,wordpress,action,exit,Php,Wordpress,Action,Exit,在PHP中,如果我有一个函数调用另一个函数;有没有办法让被调用函数退出调用者函数而不终止整个脚本 例如,假设我有一些代码,比如: <?php function funcA() { funcB(); echo 'Hello, we finished funcB'; } function funcB() { echo 'This is funcB'; } ?> <p>This is some text. After this text, I'm go
<?php
function funcA() {
funcB();
echo 'Hello, we finished funcB';
}
function funcB() {
echo 'This is funcB';
}
?>
<p>This is some text. After this text, I'm going to call funcA.</p>
<p><?php funcA(); ?></p>
<p>This is more text after funcA ran.</p>
这是一些文本。在这段文字之后,我将调用funcA
这是funcA运行后的更多文本
不幸的是,如果我在funcB中发现一些让我想阻止funcA完成的东西,我似乎必须退出整个PHP脚本。这有什么办法吗
我知道我可以在funcA()中写入一些内容来检查funcB()的结果,但在我的情况下,我无法控制funcA()的内容;我只能控制funcB()的内容
让这个例子更具体一点;在这个特殊的例子中,我正在使用WordPress。我正在连接,并试图阻止WordPress通过执行钩子后调用的locate_template()函数实际需要/包含该文件
有人有什么建议吗?在funcA
中没有处理的funcB
中抛出一个
<?php
function funcA() {
try
{
funcB();
echo 'Hello, we finished funcB';
}
catch (Exception $e)
{
//Do something if funcB causes an error, or just swallow the exception
}
}
function funcB() {
echo 'This is funcB';
//if you want to leave funcB and stop funcA doing anything else, just
//do something like:
throw new Exception('Bang!');
}
?>
也许
这不是一个解决方案,但您可以钩住另一个函数,在请求exit()时调用该函数“register_shutdown_function('shutdown');”。以某种方式让这些事情继续下去,或者完全让你满意
<?php
function shutdown()
{
// This is our shutdown function, in
// here we can do any last operations
// before the script is complete.
echo 'Script executed with success', PHP_EOL;
}
register_shutdown_function('shutdown');
?>
我看到的唯一方法是使用异常:
function funcA() {
funcB();
echo 'Hello, we finished funcB';
}
function funcB() {
throw new Exception;
echo 'This is funcB';
}
?>
<p>This is some text. After this text, I'm going to call funcA.</p>
<p><?php try { funcA(); } catch (Exception $e) {} ?></p>
<p>This is more text after funcA ran.</p>
函数funcA(){
funcB();
echo‘你好,我们完成了funcB’;
}
函数funcB(){
抛出新异常;
回声“这是funcB”;
}
?>
这是一些文本。在这段文字之后,我将调用funcA
这是funcA运行后的更多文本
难看,但它在PHP5中工作。我还建议询问您想在WP上做什么。也许有一个函数或wp_过滤器可以替代。我会在这里和wordpress.stackexchange.com网站上询问。尽管滥用流量控制异常是邪恶的。谢谢你的提示。我应该能让这一切为我所用。我有点希望在不编辑任何模板文件的情况下实现这一点(这是我必须放置try/catch语句的地方),但这是未来的好信息。感谢您的尝试,但正如我在原始帖子中所说,我无法控制构成funcA()的代码,因此,我无法将try/catch语句放入该函数中,然后可以将对funcA()的调用包装到异常处理程序中。