2010-09-06 16 views
2

我使用php,並且通常將我的應用程序構造到模型視圖控制器中,因此它總是通過帶有類和方法屬性的index.php進行訪問。作爲URL的一部分傳遞的Class屬性指定控制器類和方法調用的簡單方法。這似乎很常見,但是我在確定我要創建哪些控制器時總是遇到麻煩。什麼是決定應該創建什麼控制器的最好,最簡單和最適用的方法?我知道它取決於Web應用程序本身,但必須通過一些通用的思維方式來啓動此過程。如何決定Web應用程序的控制器?

回答

2

我發現基於您的應用程序對象的樓宇控制器效果很好,並且可以處理您希望爲您的應用程序執行的大多數操作。

看看SO--有以/ questions,/ tags,/ users等開頭的URL。我建議通過爲每個對象創建一個不同的控制器來開始設計。 /問題(或/問題/列表)返回所有問題的列表。/questions/[0-9] +使用該ID號返回特定問題的詳細信息。/questions/ask返回Ask Question界面。

隨着您繼續構建應用程序,您可能會發現基於控制器的對象方法並不能滿足您的所有需求。例如,在我的網站(http://www.wysiap.com)上,我最終創建了一個/ list控制器來簡化我的Grails URL映射。但在大多數情況下,我確實使用了這種方法,很容易找出哪個控制器應該做不同的動作。

0

我建議您考慮一下您的應用程序需要的頁面以完成所有請求的任務。您將在同一頁面上分組類似的任務,並根據需要創建多個頁面。一個頁面可以在不同的視圖中切片,以便進行特定的操作。

考慮到這一點,你可以有一個控制器每頁。頁面的每個視圖都可以在控制器中擁有自己的方法(操作)。並且在每個視圖的方法中,您可以有一個switch(),這將使您可以有多個視圖任務。例如:

  • 的index.php(控制板控制器)
  • /問題列表(QuestionList控制器,動作指數,顯示整個頁面)
  • /問題列表/添加(QuestionList控制器,動作添加, (profile控制器,動作索引)
  • /profile/edit(Profile控制器,動作編輯,管理所有的爲您的個人資料要求的任務)
  • ...

我這樣設計我的大多數Web應用程序和使用Zend-Framework

相關問題