我剛剛重構了一個php頁面,使它稍微容易在未來擴展和維護,並陷入了一個相當簡單的問題。在重構的php代碼中停止執行?
我已經打破一個方法分成3
largemethod()已經成爲這樣的事情:
nowsmallmethod(){
doSomeChecks();
assignProduct();
giveFeedbacktoUser();
}
這是所有好,好,我遇到的問題是doSomeChecks() ;
doSomeChecks(){
if(something that shouldnt be true is true){
return Controller->redirectBk();
}
}
問題的癥結在於當nowsmallmethod()完成時Controller-redirectBk首先重定向。這意味着即使測試失敗,也會爲用戶分配產品。我使用的是一個名爲Silverstripe的PHP框架,所以我不能真正改變Controller-> redirectBk()的行爲。如果我沒有檢查自己的方法,那麼一切都會正常工作,因爲「return Controller-> redirectBk();」會停止執行並重新導回。 當測試失敗時,在nowsmallmethod()中停止執行的最佳方式是什麼?我意識到我可以返回一個錯誤的狀態代碼,然後停止執行,但它似乎是一個醜陋的方式。有沒有更優雅的方式?另一個選擇是,如果我可以在doSomeChecks()返回類似的東西,「return(return $ controller-> redirectBk())」,但這不是有效的PHP語法,也不是特別容易閱讀。任何幫助將非常感激。
享受你的週末! 乾杯 尼克
這在功能上等同於返回錯誤代碼。我只是認爲可能有更好的方法來做到這一點,但也許不是。在這種情況下,任何失敗的測試都必須設置$ controller-> redirectBk(),然後返回false。歡呼你的建議 – Nick 2011-01-22 23:37:44