Php 什么是「;管制员;及;行动“;在Symfony文档中?

Php 什么是「;管制员;及;行动“;在Symfony文档中?,php,symfony,Php,Symfony,我刚刚发现了控制器,它是这样写的: 作为经验法则,您应该遵循5-10-20规则,其中控制器应该只定义5个或更少的变量,包含10个或更少的操作,并且在每个操作中包含20行或更少的代码 我对它的含义有一个疑问,因为它可以用两种不同的方式来理解 “控制器”指定控制器类(例如class MyController{}),“操作”指定控制器函数(例如public function indexAction(){})=>这对我来说毫无意义 “控制器”指定控制器函数(expublic function index

我刚刚发现了控制器,它是这样写的:

作为经验法则,您应该遵循5-10-20规则,其中控制器应该只定义5个或更少的变量,包含10个或更少的操作,并且在每个操作中包含20行或更少的代码

我对它的含义有一个疑问,因为它可以用两种不同的方式来理解

  • “控制器”指定控制器类(例如
    class MyController{}
    ),“操作”指定控制器函数(例如
    public function indexAction(){}
    )=>这对我来说毫无意义

  • “控制器”指定控制器函数(ex
    public function indexAction(){}
    ),而“操作”指定这些函数中的指令(ex
    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(){}
    }
    
    // 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(){}
    
    }
    
    此外,我无法在这种情况下理解“5个变量或更少”的含义。5个全局变量?所有10个动作的5个局部变量

    在案例2中,这意味着:

    // Approximate maximum number of lines : 200    
    class MyController {
    
        // Max 20 lines of code
        public function firstAction(){}
    
        [...]
    
        // Max 20 lines of code
        public function tenthAction(){}
    }
    
    // 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是好的,单词“action(s)”可以替换为“instruction(s)”或“directive(s)”,例如?

    控制器是一个包含操作的类。操作是为特定视图运行的方法

    意思是你建议的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)
        }
    }
    

    控制器是一个包含操作的类。操作是为特定视图运行的方法

    意思是你建议的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)
        }
    }
    

    我完全同意你的观点,控制器必须尽可能简单,我讨厌里面有太多的线路。但是,我不确定您的答案,因为他们说:控制器是您创建的PHP函数,它从Symfony的请求对象读取信息,创建并返回响应对象,还有一个代码示例:控制器是numberAction()方法,它位于控制器类LuckyController中。我与我的一位朋友交谈,他是一名经过认证的SF开发人员,他的回答与你一样:在Symfony术语中,控制器是一个类,动作是一种方法。所以我想你对第一句话的看法是正确的。但我坚持认为,正如我在之前的评论中所解释的,文档中并不清楚(他们在类和方法中都使用Controller一词),因为一般来说(在Symfony上下文之外),Controller的角色是在应用程序的不同部分之间引导数据,在我们的案例中,从请求到响应。好的,谢谢你的回答!我完全同意你的观点,控制器必须尽可能简单,我讨厌里面有太多的线路。但是,我不确定您的答案,因为他们说:控制器是您创建的PHP函数,它从Symfony的请求对象读取信息,创建并返回响应对象,还有一个代码示例:控制器是numberAction()方法,它位于控制器类LuckyController中。我与我的一位朋友交谈,他是一名经过认证的SF开发人员,他的回答与你一样:在Symfony术语中,控制器是一个类,动作是一种方法。所以我想你对第一句话的看法是正确的。但我坚持认为,正如我在之前的评论中所解释的,文档中并不清楚(他们在类和方法中都使用Controller一词),因为一般来说(在Symfony上下文之外),Controller的角色是在应用程序的不同部分之间引导数据,在我们的案例中,从请求到响应。好的,谢谢你的回答!