簡體   English   中英

Symfony2我什么時候應該創建一個新的控制器?

[英]Symfony2 when should I create a new controller?

我目前正在使用Symfony2,並且試圖將我的代碼分為不同的控制器(例如Ajax控制器,用戶控制器等),但是我真的不知道何時應該使用一個新的控制器。

例如,我的DefaultController開始變得很大(〜800行),我想知道控制器過長是否會影響網站的性能? (更長的加載時間...)而且,如果可以,我什么時候應該將控制器拆分為較小的控制器?

我要說的是,您應該對根據相同數據(實體)進行操作或在明確定義的責任范圍內進行操作的操作進行分組。 例如,針對用戶的UserController,針對博客帖子的PostController,等等。這意味着,如果您要創建一個動作,該動作的角色不同於其余動作,則將其放在單獨的控制器中。

Symfony幾乎緩存了所有內容,因此我認為大型控制器不會對性能產生影響,但是如果您擁有數千行的控制器,我不確定它只會做一件事。

對於放錯位置的查詢和業務邏輯,控制器的大小也可能是一個警告信號。 您應該將QueryBuilder調用分為存儲庫類,並將其他邏輯分為服務和事件處理程序。 您可以通過使用注釋而不是PHP代碼來保存更多行。

我認為從一個具有CRUD結構的每個相關模型的控制器開始是一個好主意。

當然,這取決於您的需求,但是如果您有模型“ Post”,則可能需要具有CRUD路由和方法的PostController,例如:index(/ posts),new,update,create,delete ...您需要從此基本結構中刪除或添加與Post有關的一些方法。

嘗試在defaultController中檢測相對於特定模型的真實情況,並為其創建一個控制器。

祝好運。

@riska和@Yoann所說的都是正確的。

另外,如果我確定它僅包含一種方法,則我希望創建單獨的控制器。 在這種情況下,我將其放入DefaultController

根據我的經驗,控制器是UI層的一部分。 如果您非常關心使控制器小型化,那么讓我為您提供最佳方案,您可以使控制器必須執行以下操作:

1.Call the appropriate service
2.Return the response

對於每個控制器動作,這是兩行代碼,或者甚至可以一行完成。

就像上面提到的人一樣,控制器通常由它們所操作的實體/服務的類型分開。 例如,如果您有一個實體-假設用戶,那么以下操作很可能在其中:createAction,editAction,removeAction,registerAction,activateAction,loginAction,logoutAction等...

如果您的控制器較薄或較胖,則不會對性能產生任何影響。 該代碼將以類似的流程執行,並且所有類都將緩存在生產環境中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM