2017-09-14 90 views
0

我剛剛發現the official Symfony best practices大約控制器,它寫的是:什麼是Symfony文檔中的「控制器」和「動作」?

作爲一個經驗法則,你應該遵循的規則5-10-20,其中控制器應該只定義5個變量或更少,包含10個動作或更少,並且在每個動作中包括20行或更少的代碼。

我對它的含義有疑問,因爲它可以通過兩種不同的方式來理解。

  1. 「控制器」 表示控制器類(前class MyController{})& 「動作」 表示控制器功能(例如public function indexAction(){})=>它是沒有意義的我

  2. 「控制器」 表示控制器的功能(前public function indexAction(){})&「行動」是指在這些功能的指令(例如if(){//do something})=>是有意義的我

在案例1中,這意味着類似:

// Approximate maximum number of lines : 200  
class MyController { 

    // Max 20 lines of code 
    public function firstAction(){} 

    [...] 

    // Max 20 lines of code 
    public function tenthAction(){} 
} 

此外,我不能在這種情況下,什麼手段「5個變量或更少」獲得。 5個全局變量?所有10個動作的5個局部變量?

在案例2中,這意味着類似:

// No maximum number of lines 
class MyController { 

    // Max 10 actions * 20 lines by actions = 200 lines of code, and 5 local variables 
    public function firstAction(){} 

    [...] 

    // Max 10 actions * 20 lines by actions = 200 lines of code, and 5 local variables 
    public function fiftiethAction(){} 

} 

我的問題的目標是成爲絕對的把握,瞭解好的意思。但是我也認爲讓Symfony團隊重寫這個句子而不留下任何含糊之處是有用的嗎?我特別想像我這樣的非英語開發人員,或者Symfony初學者。

考慮到情況2是好的,例如「動作」一詞可以替換爲「指令」或「指令」?

回答

3

控制器是一個具有動作的類。動作是針對特定視圖運行的一種方法。

含義1您建議正確。

他們推薦的是讓控制器儘可能簡單。帶有大量代碼行爲的操作方法並不像只有一個小任務執行的操作方法那麼幹淨。

class SomeController 
{ 
    private $variablesLikeThis; 
    private $keepToAroundFive; 

    public function someAction() 
    { 
     // no more than ten of these action methods 
     // don't make the code in here too long (20 lines or so) 
    } 
} 
+0

我完全同意你的觀點,控制器必須儘可能簡單,而且我討厭有很多線條。然而,我不確定你的答案,因爲例如在[Symfony控制器文檔](https://symfony.com/doc/current/controller.html)中的例子中,他們說:**控制器是一個PHP函數您創建從Symfony的Request對象中讀取信息,並創建並返回一個Response對象**以及一個代碼示例:**控制器是numberAction()方法,它位於控制器類LuckyController內。** – Seb

+0

I和我的一位認證的SF開發人員的朋友聊了聊,他回答我的話和你一樣:在Symfony術語中,控制器是一個類,一個動作是一種方法。所以我想你對第一句話是正確的。但我堅持認爲,在文檔中並不清楚,正如我在之前的評論中所解釋的那樣(他們對類和方法都使用Controller這個詞),並且因爲一般來說(在Symfony上下文中)控制器角色是指導應用程序不同部分之間的數據,從請求到我們的應答。好吧,謝謝你的回答! – Seb

相關問題