oo-php中的新控制器

oo-php中的新控制器,php,zend-framework,Php,Zend Framework,我有一个实际的疑问 我正在使用OO php,我对它还不熟悉。我使用zend框架来澄清这一点 我正在编写控制器(类)和操作(方法),其中包括PatientMapper.php,它有所有与mysql表相关的操作,Patient.php有所有setter和getter函数 我怀疑我什么时候应该写一个新的控制器 我应该为单个mysql表上的所有操作编写一个控制器吗 或用于与模块相关的所有操作的单个控制器 我认为您应该为单个mysql表编写控制器,因为如果您的应用程序成熟,您可以使用几千个行控制器。我认为

我有一个实际的疑问

我正在使用OO php,我对它还不熟悉。我使用zend框架来澄清这一点

我正在编写控制器(类)和操作(方法),其中包括PatientMapper.php,它有所有与mysql表相关的操作,Patient.php有所有setter和getter函数

我怀疑我什么时候应该写一个新的控制器

  • 我应该为单个mysql表上的所有操作编写一个控制器吗

  • 或用于与模块相关的所有操作的单个控制器


  • 我认为您应该为单个mysql表编写控制器,因为如果您的应用程序成熟,您可以使用几千个行控制器。

    我认为您应该为单个mysql表编写控制器,因为如果你的应用程序长大了,你就可以用几千个行控制器来结束它。

    IMHO我会为每个与mysql表相关的操作建议一个操作
    可维护性。这些将是轻巧的操作,只需为该表调用您的模型

    IMHO我将为每个与mysql表相关的操作建议一个操作
    可维护性。与前面的答案相反,这些将是只调用该表的模型的轻量级操作,我认为您的控制器不应该与数据库相关

    控制器不处理业务逻辑,而模型处理业务逻辑

    除此之外,您还可以为每个实体编写一个控制器

    用户是一个实体,可以包装在控制器中,即使它依赖于多个表。
    如果您的控制器越来越大,您可以切换到模块(Zend Framework术语)并创建一个用户模块,其中包含一个帐户控制器等。

    与前面的答案相反,我认为您的控制器不应该与DB相关

    控制器不处理业务逻辑,而模型处理业务逻辑

    除此之外,您还可以为每个实体编写一个控制器

    用户是一个实体,可以包装在控制器中,即使它依赖于多个表。
    如果您的控制器越来越大,您可以切换到模块(Zend Framework术语)并创建一个用户模块,其中包含一个帐户控制器等。

    控制器将概念上属于一起的操作分组。控制器可能只使用一个特定的模型类(不一定是数据库访问类),但也可能使用其中的许多类

    重要的是,控制器不应包含模型类的逻辑。控制器的唯一职责是接收特定交互的输入并将其委托给模型,您允许用户对应用程序进行交互。在基于Web的MVC中,它通常还负责根据操作结果更新视图

    在MVC中,人们必须理解的最重要的区别是,M应该能够独立生活,而V和C属于同一类。V和C只构成应用程序的UI,它们不应该做除此之外的任何事情。基本上,你的M就是你的应用程序,而你的VC就在上面。真的应该是M | VC imho


    话虽如此,如果您觉得您的应用程序可以使用单个控制器,那么就使用单个appController。但是,一旦您发现自己添加了概念上适合单独控制器的操作,那么就添加一个新控制器。如果您的应用程序是一个简单的CRUD应用程序,那么每个数据库表都有一个控制器。如果它做了其他的事情,那么就给它一些适合场景的东西。

    控制器将概念上属于某一类的动作分组。控制器可能只使用一个特定的模型类(不一定是数据库访问类),但也可能使用其中的许多类

    重要的是,控制器不应包含模型类的逻辑。控制器的唯一职责是接收特定交互的输入并将其委托给模型,您允许用户对应用程序进行交互。在基于Web的MVC中,它通常还负责根据操作结果更新视图

    在MVC中,人们必须理解的最重要的区别是,M应该能够独立生活,而V和C属于同一类。V和C只构成应用程序的UI,它们不应该做除此之外的任何事情。基本上,你的M就是你的应用程序,而你的VC就在上面。真的应该是M | VC imho


    话虽如此,如果您觉得您的应用程序可以使用单个控制器,那么就使用单个appController。但是,一旦您发现自己添加了概念上适合单独控制器的操作,那么就添加一个新控制器。如果您的应用程序是一个简单的CRUD应用程序,那么每个数据库表都有一个控制器。如果它做了其他事情,那么给它一些适合场景的东西。

    @gordon-是的,我的应用程序是CRUD应用程序。所以我需要为每个表创建一个模型。这是最被接受的方法。是的,我有点清楚abt控制器

    我有一个页面,在那里我需要来自3个表的数据。所以我需要调用所有3个模型方法来获取数据

    我有一个小小的疑问…我在课程开始时使用了这样的代码。这是由其他开发人员编写的…我正在使用它。。我发现很难使用连接,bcos这是在锁定数据库。这里有关于如何使用连接的帮助吗

     protected $_dbTable;
    
        public function setDbTable($dbTable)
        {
            if (is_string($dbTable)) {
                $dbTable = new $dbTable();
            }
            if (!$dbTable instanceof Zend_Db_Table_Abstract) {
                throw new Exception('Invalid table data gateway provided');
            }
            $this->_dbTable = $dbTable;
            return $this;
        }
    
        public function getDbTable()
        {
            if (null === $this->_dbTable) {
                $this->setDbTable('Application_Model_DbTable_Appointment');
            }
            return $this->_dbTable;
        }
    
    这是选择部件..无法使用联接

      $select = $this->getDbTable()->select()
                            ->from("patient_appointment",array('pa_pd_patient_id',
                                    'DATE_FORMAT(pa_datetime,"%h:%i %p") as pa_time','pa_datetime','pa_um_id'
                                    ,'pa_created_date','pa_mode','pa_type'))
                            ->where('date(pa_datetime) = ?', $date)
                            ->where('pa_pd_patient_id = ?', $patientId)
                            ->order('time(pa_datetime)');
            $resultSet = $this->getDbTable()->fetchAll($select);
    

    @戈登-是的,我的应用程序是CRUD应用程序。所以我需要为每个表创建一个模型。这是最被接受的方法。是的,我有点清楚abt控制器

    我有一个页面,在那里我需要来自3个表的数据。所以我需要调用所有3个模型方法来获取数据

    我有一个小小的疑问…我在课程开始时使用了这样的代码。这是由其他开发人员编写的…我正在使用它