我有一些麻煩究竟瞭解如何在MVC架構充分利用控制器。
我有如下這個URL方案的Web應用程序:
/
- 主要指標/static-page
- 靜態頁面/categories
- 指數爲特定類別/categories/users
- 指數的特定用戶類別/categories/users/id#/user-name
- 特定類別的特定用戶/categories/event-type-A
指數與特定類別相關/categories/event-type-A/id#/event-name
事件 - 爲特定類別
*注特定事件 - 爲特定類別
/categories/event-type-B
指數與特定類別相關/categories/event-type-B/id#/event-name
事件的特定事件:如果id#
存在,則此URL結構與StackOverflow類似,格式不正確的URL(錯誤的event-name
)會自動更正。 問:
由於categories
,users
和event-type
s各自具有與其相關的獨特的功能(即編輯的用戶,操縱事件等),它們是所有contollers自己(?右) 。由於event-type-A
和event-type-B
非常相似,因此它們具有從events
類擴展的通用功能。
你如何建議我組織我的控制器,以便他們遵循OOP和MVC設計中的「標準實踐」?
我現在有一個Pages
類爲我的靜態頁面,並且我期待有一個categories
類調用users
類,event-type-A
和event-type-B
類,(如上所述)是一個events
類的擴展......但從這裏我不確定如何繼續下去。
任何簡單/僞代碼的例子將不勝感激。
附加信息:
FYI:我使用PHP/MySQL的。我一直在努力通過編寫自己的框架來學習MVC,但最近轉向了CodeIgniter。話雖如此,無論是CodeIgniter特定的解決方案或一般的MVC解決方案就足夠了。
更新:
由於Akomentioned below,我可以絕對有events
合併成一個單一的控制器,然後有兩個type
期從該產卵。我只是混淆了我如何實際設置每個控制器(要定義哪些方法等)以使它們正確地一起工作。
簡單的首選項。很多'event-type-A'和'event-type-B'的代碼都可以重用,但不是全部。因此,我不希望他們被列爲「事件」的子女,我寧願讓他們分開(主要是爲了SEO目的)。感謝您的建議,儘管......除非有一種簡單的方法來實現這一點,同時隱藏路徑中的'events'目錄。 – ServAce85
讓我們假設我繼續並按照你的建議來創建匹配方案'/ categories/events/type/id#/ event-name'的控制器,我將如何定義我的控制器以使其工作?我想你有'categories','events','types'的控制器,但是如問題所述,我不明白如何正確設置方法來完成這個工作。你能指導我完成整個過程嗎? – ServAce85