oo-php中的新控制器
我有一个实际的疑问 我正在使用OO php,我对它还不熟悉。我使用zend框架来澄清这一点 我正在编写控制器(类)和操作(方法),其中包括PatientMapper.php,它有所有与mysql表相关的操作,Patient.php有所有setter和getter函数 我怀疑我什么时候应该写一个新的控制器oo-php中的新控制器,php,zend-framework,Php,Zend Framework,我有一个实际的疑问 我正在使用OO php,我对它还不熟悉。我使用zend框架来澄清这一点 我正在编写控制器(类)和操作(方法),其中包括PatientMapper.php,它有所有与mysql表相关的操作,Patient.php有所有setter和getter函数 我怀疑我什么时候应该写一个新的控制器 我应该为单个mysql表上的所有操作编写一个控制器吗 或用于与模块相关的所有操作的单个控制器 我认为您应该为单个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个模型方法来获取数据 我有一个小小的疑问…我在课程开始时使用了这样的代码。这是由其他开发人员编写的…我正在使用它