我已经建立了一个PHP'基于个人档案的'网站,该网站有许多'类别'页面,每个页面都列出了许多个人档案。
类别页面:列出个人资料(类似画廊的布局中的图像/名称) 个人资料页面:显示有关一个人/个人资料的详细信息
我在这里使用了一种类似MVC的架构。因此,当访问者转到“配置文件”页面时,相应的Controller会要求ProfileDataMapper获取相关的配置文件。 ProfileDataMapper将完整形成的配置文件域对象返回给Controller,然后将其发送到模板视图。
域对象全部从其构造函数的参数填充,并在其中进行验证检查,以便在任何参数丢失或错误时,它们将抛出错误而不进行实例化。
当我想在“类别”页面上列出多个“个人档案”时,问题就开始了。在这里,我要求DataMapper提供一个Profiles数组。但是当我知道在这种情况下我只需要一个名称和URL时,它返回一个完整的Profile Objects列表。它给映射器后面的MySQL DB带来了太大的压力。
显而易见的解决方案是简单地使DataMapper仅提取列表中我真正需要的几个字段。但是我的域模型验证测试会由于缺少数据而失败(他们期望所有字段)。
所以现在我想我应该创建一个名为PartialProfile或ListableProfile的新域模型。此域模型只有一个名称/ url,并且只会验证这两个字段。 ProfileDataMapper将在其list方法而不是Profiles中返回PartialProfiles。也许Profile甚至可以从PartialProfile扩展。
这是'部分型号'一个好的方法去?或者我应该以某种方式重构我的验证码?在我看来,我需要不同的水平'验证。有时我需要包含所有数据的对象。有时我不会。
谢谢善良的人!