gpt4 book ai didi

PHP MVC : How to exit from Actions/Controllers early?

转载 作者:可可西里 更新时间:2023-11-01 13:23:34 26 4
gpt4 key购买 nike

在 PHP MVC 框架中,如何干净地优雅地退出当前 Controller /操作,但继续正常的脚本执行?

例如,假设我的框架通常遵循以下大纲:

  1. 将 URL 映射到 Controller /操作
  2. 实例化Controller,调用Action(捕获输出)
    1. 做事
    2. 渲染 View
    3. Action方法结束,继续正常操作
  3. 必要时处理输出
  4. 将输出发送到浏览器

现在,假设我想在“Do Stuff”步骤的某处停止“正常”执行,比如渲染不同的 View ,或进行 header 重定向,我想停止处理正文的其余部分操作,但继续“处理输出”步骤

我怎样才能以最好的方式实现这一点?我唯一的想法是:

//in controller
protected function redirect($url) {
header("Location: $url");
exit();
}

但这完全跳过了框架执行的其余部分,并将输出缓冲区中的任何内容直接转储给用户。替代方案:

//in dispatcher
call_user_func_array(array($controller,$action),$params);
afterwards:
...

//in controller
protected function redirect($url) {
header("Location: $url");
goto afterwards;
}

然而,这让我 twitch并且违背了我所学到的一切,特别是因为它引用的标签完全在另一个文件中。

那么,还有其他方法可以实现吗?

注意:重定向示例可能应该使用 exit() 方式,因为无论如何我们只是重定向到另一个页面而不关心输出。我正在寻找通用解决方案。

最佳答案

在您的 Action 方法中,您可以将所有输出收集到一个字符串中,而不是打印出来。仅在方法结束时将其打印出来。如果您需要重定向或退出,那么您还没有输出任何内容,您可以重定向或从该方法返回。

关于PHP MVC : How to exit from Actions/Controllers early?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3133868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com