避免控制脂肪所以我正在使用ZendFramework,我有一个问题涉及通过我的一个操作来防止胖Controller。基本上我正在将CSV文件规范化到我的数据库中。这意味着我必须获取提要然后使用我的模型。提要抓取只是为了展示它是如何工作的,但它现在是一个ActionHelper。我在ZendFramework中使用数据映射器模式。我讨厌我在我的Controller中这样做。所有这些setProperty()->setProperty()->setProperty()看起来都非常难看,我觉得我做错了地方?创建某种类型的服务层是否是更好的选择,我在其中传递整个$feed,然后在该类中实例化我
我正在阅读ZendFramework快速入门教程,在他们的演示代码中,他们使用了一个数据映射器,该映射器使用Zend_DB_Table来访问数据库(参见:http://framework.zend.com/manual/en/learning.quickstart.create-model.html)。Zend_DB_Table似乎不使用准备好的语句或提供使用事务的方法。因此,我倾向于直接使用带有zend_db_adapter的数据映射器。考虑到这一点,有人可以就Zend_DB_Table的优势提出建议吗?感谢您的意见!干杯。 最佳答案
在我的模型层中,我有数据映射器、域对象和“服务”(连接到模型层之外)。我选择实现一个DomainObjectFactory和一个DataMapperFactory,这让我陷入了DMDO关系。理想情况下,数据映射器将为执行“获取”/“读取”的每个方法返回相关域对象的实例(或实例数组),但数据映射器无权访问域对象工厂。没有DM和DO上的工厂模式,自动加载器可以在DM中接管,这样就可以创建DO的实例。但是,这是如何通过工厂实现的?我能想到的一个可能的解决方案是将相关域对象的实例传递给数据映射器方法,例如:$user=$this->domainObjectFactory->build('use
我正在我的ZendFrameworkWeb应用程序中实现DataMapper设计模式,一切顺利,我真的很喜欢在Zend中使用数据映射器,而不是只应用RowGateway模式,但我遇到了一个问题我的架构。我不确定如何使用我的数据映射器以OOP方式引用和处理外键约束。所以我有我的Model类、我的DbTable类和我的Mapper类。我是否应该将所有外键关系放在我的DbTable类中,这样我就可以使用findDependentRowset()函数在我的映射器中检索,或者更好的方法是在我的映射器中实例化依赖类。使用数据映射器模式映射外键的最佳OOP实践是什么? 最
如果我有一个相当复杂的用户模型,我想使用数据映射模式来加载,我如何在不允许用户知道UserMapper的情况下延迟加载一些更密集的用户信息位?例如-如果User模型允许一个地址对象数组(并且User可能有很多,但不一定是预先需要的),如果/当需要时我将如何加载这些对象?我是否让用户模型知道AddressMapper?我是否将User模型传回UserMapper,然后只对地址进行水合?还有更好的选择吗? 最佳答案 好吧,我一次发现了以下巧妙的模式,由BenScholzen提供,ZendFramework的开发人员。它是这样的:clas
我正在阅读zend框架快速入门:Mapper类中有一个函数:publicfunctionsave(Application_Model_Guestbook$guestbook){$data=array('email'=>$guestbook->getEmail(),'comment'=>$guestbook->getComment(),'created'=>date('Y-m-dH:i:s'),);if(null===($id=$guestbook->getId())){unset($data['id']);$this->getDbTable()->insert($data);}else
我目前正在使用适用于CodeIgniter的DataMapperORM为网站建模。目前,我有一个users包含所有标准用户信息的表,包括id和form_data表有自己的ID和一个名为created_by的字段链接到idusers上的专栏table。更简单的说,users-form_data是一对多的关系。我的DataMapper模型如下所示:用户classuserextendsDataMapper{var$has_many=array('form_data_created_by'=>array('class'=>'form_data','other_field'=>'created_
早上好我目前正在从事一个利用Codeigniter和Datamapper库(http://datamapper.wanwizard.eu)的项目。该项目为用户数据使用一个中央数据库(称为“base”),为应用程序数据使用一个单独的数据库(“crm”)。这样一来,将来我们可以构建使用用户目录的其他应用程序,而无需绑定(bind)到单个服务器。我有一个问题,我需要跨两个数据库使用内置的Datamapper关系。到目前为止,这是我的设置:人物模型classpersonextendsDataMapper{var$db_params='base';var$prefix='base_';var$h
正如标题所暗示的,我在实现3结构模型(域对象、数据映射器和服务)时遇到了一些小问题。过去,当有人在我的网站上注册时,我会简单地做$user->register($firstName,$lastName,$emailAddress,$username...);并且该方法将按这样的步骤运行1.Checkiftheformsentwasvalid.2.Checkifalltherequiredfieldswerefilled.3.Checktheifthelengthsofstringswerevalidandtherangeofintegersetc.4.Checkiftheinputis
让我们假设下表为ZendFramework应用设置。user(id)groups(id)groups_users(id,user_id,group_id,join_date)我采用DataMapper方法来建模,这基本上给了我:Model_User、Model_UsersMapper、Model_DbTable_UsersModel_Group、Model_GroupsMapper、Model_DbTable_GroupsModel_GroupUser、Model_GroupsUsersMapper、Model_DbTable_GroupsUsers(用于保存可视为实体的关系;注意“j