2017-09-14 9 views
0

私はちょうどそれが書かれているコントローラ、およそthe official Symfony best practices発見:親指のルールとしてSymfonyドキュメントの「コントローラ」と「アクション」とは何ですか?

を、あなたはコントローラが唯一の5つの変数以下を定義する必要があり5-10-20ルールに従わなければならないが、10回の行動が含まれています以下であり、各行為に20行以下のコードを含む。

2つの異なる方法で理解できるため、その意味について質問があります。

  1. "のコントローラは" 指定

  2. "コントローラ" 私には(例public function indexAction(){})=>それは意味をなさないコントローラ機能を指定コントローラクラス(EX class MyController{})& "アクション" を指定しますコントローラの機能(ex public function indexAction(){})& "actions"はこれらの関数の命令を指定します(ex if(){//do something})=>私には意味があります

  3. ケース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つのローカル変数?私の質問の目標は、良い意味を理解することが絶対的に確認することです

// 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(){} 

} 

は、ケース2では、そのようなものを意味します。しかし、私は、Symfonyチームに、あいまいさを残さずにこの文章を書き直すように依頼すると便利だろうとも思っています。私は特別なことに、私のような英語以外の開発者やSymfonyの初心者について考えます。

ケース2は良いものであることを考慮すると、単語「アクション(複数可)」は、例えば、「命令(複数可)」または「指令(S)」に置き換えることができますか?

答えて

3

コントローラはアクションを持つクラスです。アクションは、特定のビューに対して実行されるメソッドです。

意味1は正しいです。

あなたができるだけシンプルにコントローラを保つことをお勧めします。コード行がロードされるアクションメソッドは、実行するタスクが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 controller doc](https://symfony.com/doc/current/controller.html)のexempleのために、彼らはこう言っているからです。**コントローラはPHP関数ですsymfonyのRequestオブジェクトから情報を読み取り、レスポンスオブジェクト**を生成して返します。**コントローラはコントローラクラスLuckyController内に存在するnumberAction()メソッドです** ** – Seb

+0

I SFの開発者である私の友人と話をし、彼は私と同じように私に答えました。Symfonyの用語では、コントローラはクラス、アクションはメソッドです。だから私はあなたが第1声明で正しいと思います。しかし、私は前回のコメントで説明したように、ドキュメンテーションでは明確ではないと主張しています(コントローラとは、クラスとメソッドの両方にControllerという言葉を使用しています)。アプリケーションのさまざまな部分の間で、私たちのケースではリクエストからレスポンスまでのデータです。さて、あなたの答えをありがとう! – Seb

関連する問題