在一個PHP MVC框架中,我該如何乾淨和優雅退出當前控制器/操作,但繼續正常的腳本執行?PHP MVC:如何儘早退出Actions/Controllers?
例如,假設我的框架通常遵循這個綱要:
- 地圖URL到控制器/動作
- 實例化控制器,調用動作(捕獲輸出)
- 做的東西
- 渲染視圖
- 在操作結束時,繼續正常操作
- 過程輸出如有必要
- 輸出發送到瀏覽器
現在,讓我們說,我想阻止「正常」執行中「做的東西」步的地方,比方說,呈現了不同的看法,或做一個標題重定向,我想停止處理Action的其餘部分,但繼續進行「Process output」步驟
我該如何實現這個最佳方式?我唯一的想法是:
//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()
的方式,因爲我們只是重定向到其他頁面而不關心輸出。我正在尋找一種通用解決方案。
+1用於緩衝Action的輸出。 – 2010-06-28 15:52:03