我一直在阅读多个 PHP 框架,尤其是 Zend 框架,但我对前进的正确方法感到困惑。
Zend Framework 不使用 ActiveRecords,而是使用 Table Data Gateway 和 Row Data Gateway 模式,并使用 DataMapper 将 Row Data Gateway 的内容映射到模型,因为当您的模型没有 1 时 ActiveRecord 会崩溃: 1 映射到您的数据库表。Zend 快速入门指南中有一个示例。
对我来说,他们的例子看起来非常臃肿,到处都是大量的 getter 和 setter。我遇到了各种关于域驱动设计的博客文章,他们认为使用这么多的 getter 和 setter 是不好的做法,因为它会将所有内部模型数据暴露给外部,因此它与公共属性相比没有优势。这是一个例子。
我的问题:如果你删除那些 getter 和 setter,你将如何呈现你的视图?在某些时候,数据必须到达视图,以便您可以向用户实际展示一些内容。遵循 DDD 建议似乎打破了 MVC 中 M 和 V 之间的分离。遵循 MVC 和 Zend 示例似乎破坏了 DDD,让我为我的所有模型输入了大量的 getter、setter 和 DataMapper。除了大量的工作之外,它似乎也违反了 DRY。
我真的很感激一些(链接到)好的例子或更多关于它们如何组合在一起的信息。我正在努力提高我的建筑和设计技能。