ZF2用户指南介绍了如何set up and query the database using the Table Data Gateway pattern。
我想知道用另一张桌子扩展这个设计的最佳方法是什么,让我们说" track"。
很容易复制现有的使用serviceManager的方法为track表创建一个新的tableGateway和object,并使用控制器获取特定专辑的曲目。但这样做是错误的。
我正在考虑使用返回此特定相册曲目的方法扩展相册模型。但要这样做,我必须在专辑模型中使用track tableGateway - 而且我不确定如何设置它。
使用模型内部的serviceManager来访问跟踪网关和对象似乎是错误的。或者我会以某种方式将它们注入对象?
做这样的事情的首选方式是什么?
答案 0 :(得分:0)
当你达到你所说的地步时,那样做是错误的"你应该停止思考问题的解决方案和原因。您的问题可能是您不太了解问题,无法选择解决方案。
当您进行软件设计时,您不应该要求自己做出任意设计选择。相反,您必须确定您的关键要求,并选择满足这些要求的最简单的解决方案。
在这里,我建议您坚持使用最简单的解决方案:拥有一个完全不同的tableGateway和业务对象,而不是与相册业务对象完全相关联。
但是,由于您使用的是ZF2指南,因此您显然希望了解有关ZF2的更多信息。这是您的设计要求之一,因此我建议您使用ZF2工具以多种方式解决您的问题。 您可以使用服务管理器工厂和抽象工厂,构建另一个模块,使用不同的存储等。