Php Zend框架与防胖控制器 避免脂肪控制器
所以我在使用Zend框架,我有一个问题涉及到用我的一个动作来阻止脂肪控制器。基本上,我正在将CSV文件规范化到我的数据库中 这意味着我必须获得提要,然后使用我的模型。 feed抓取只是为了展示它是如何工作的,但它现在是一个动作助手 我正在使用Zend框架的数据映射器模式。我讨厌我在控制器中这样做。所有这些setProperty()->setProperty()->setProperty()看起来难以置信的混乱,我觉得我在错误的地方做了吗?如果只创建某种服务层,传递整个$feed,然后在该类中实例化我的模型和映射器,这会是一个更好的选择吗 另外,我需要规范化,这意味着我应该使用事务,但我不确定应该从哪里开始我的事务。因为我现在做事情的方式,我唯一能考虑的地方是我的控制器。哇!那将是一个可怕的地方 如何从控制器中获取模型行为和操作? ImportController.phpPhp Zend框架与防胖控制器 避免脂肪控制器,php,zend-framework,controller,datamapper,Php,Zend Framework,Controller,Datamapper,所以我在使用Zend框架,我有一个问题涉及到用我的一个动作来阻止脂肪控制器。基本上,我正在将CSV文件规范化到我的数据库中 这意味着我必须获得提要,然后使用我的模型。 feed抓取只是为了展示它是如何工作的,但它现在是一个动作助手 我正在使用Zend框架的数据映射器模式。我讨厌我在控制器中这样做。所有这些setProperty()->setProperty()->setProperty()看起来难以置信的混乱,我觉得我在错误的地方做了吗?如果只创建某种服务层,传递整个$feed,然后在该类中实例
服务层可能是我的选择。因此,您将创建一个如下所示的服务类:
class Your_Service_Import
{
public function importFromCsv($csv)
{
// etc.
}
}
$feed = $this->csv_to_array(trim($response->getBody()));
$service = new Your_Service_Import();
$service->importFromCsv($feed);
然后将csv_to_数组调用之后的所有控制器方法代码移动到该方法中,使控制器方法的结尾看起来像这样:
class Your_Service_Import
{
public function importFromCsv($csv)
{
// etc.
}
}
$feed = $this->csv_to_array(trim($response->getBody()));
$service = new Your_Service_Import();
$service->importFromCsv($feed);
这使得测试导入代码更容易(因为它在一个独立类中),也更容易在应用程序的其他部分中重用。我要比@Tim Fountain更进一步
$start = $this->getRequest()->getParam('start');
$end = $this->getRequest()->getParam('end');
$dataService = new Your_Service_Get();
$data = $dataService->get($start, $end);
$mapService = new Your_Service_Map();
$mapService->map($data);
Justin,当您插入时,您不能使用单个数据映射器类,对吗?你需要几个?