[英]Symfony MVC best practice for controllers
在 Symfony/Doctrine/PHP 項目中,客戶抱怨我們違反了軟件開發最佳實踐。 抱怨是關於源代碼分層不當,以及缺乏單元測試。
正如我們所見,我們一直在使用適當的 MVC。
($this->get('security.context')->isGranted('ROLE_ADMIN')
和$this->get('security.context')->getToken()->getUser()
。請注意,自從我們開始這個項目以來,Symfony 已經稍微改變了模型——但仍然向后兼容。
在控制器中,客戶專門說控制器處理是錯誤的:
return $this->render('some_template.html.twig');
)客戶說最好的做法是讓控制器簡單地將請求傳遞到系統中更遠的另一層。
此外,他說用戶管理基於“自定義模型”,其中所有用戶和角色都存儲在數據庫中 - 這使得插入不同的訪問控制系統變得困難。 特別是因為角色名稱似乎是硬編碼的,例如通過諸如($this->get('security.context')->isGranted('ROLE_ADMIN')
。
所以; 這個領域有明確的最佳實踐嗎? 屬於控制器的東西,是 Doctrine、Twig、Symfony Security,“足夠”是“控制器下方”的一個單獨層。
例如,控制器和 Doctrine 之間是否應該還有另一層?
來源: http : //fabien.potencier.org/what-is-symfony2.html
首先,什么是Symfony2?
首先,Symfony2 是一組可重用的獨立、解耦和內聚的 PHP 組件,用於解決常見的 Web 開發問題。
那么,基於這些組件,Symfony2 也是一個全棧的 web 框架。
根據您的項目和您的需要,您可以選擇一些 Symfony2 組件並使用它們開始您的項目,或者您可以使用全棧框架並從它提供的開箱即用的緊密集成中受益。 在兩種不同的方法之間進行選擇完全取決於您。
Symfony2 是一個 MVC 框架嗎?
Symfony2 實際上是為控制器部分、視圖部分提供工具,而不是為模型部分提供工具。 您可以手動創建模型或使用任何其他工具(如 ORM)。 當然,對於 Doctrine2 和 Propel 等最著名的 ORM 來說,緊密集成是存在的。 但它們是可選的依賴項。 Symfony2 的核心特性不會也永遠不會依賴於任何 ORM。
Symfony2 是一個 HTTP 框架; 它是一個請求/響應框架。 這就是大事。 Symfony2 的基本原則以 HTTP 規范為中心。
關於最佳實踐的 Symfony: https : //symfony.com/doc/current/best_practices.html
您應該閱讀有關控制器最佳實踐的內容:https ://symfony.com/doc/current/best_practices.html#controllers
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.