一对二相关信息对象

时间:2016-04-27 13:17:58

标签: php oop

当有两个相关对象时,最好将它们作为一个对象或两个单独的对象?

例如,如果你有一个Artist对象和一个与一个艺术家相关的专辑对象数组。

<?php 
// two separate objects?
$artist = $ArtistDataMapper->find(1);
$album = $AlbumDataMapper->allByArtist($artist->id);
// or one
$artist = $AristDataMapper->find(1);  //datamapper will also include query for albums

2 个答案:

答案 0 :(得分:1)

这取决于你的目的是什么。 但是,如果您将其视为物理实体,您可能最终会想到对不同实体的“引用”。 我的意思是,你可能有:  *艺术家对象(身份证,姓名,出生日期等)  *专辑对象(id,artistId,名称等)

最终,您可能希望在两者之间拥有Discography对象。

无论如何,这取决于你和你的要求。

答案 1 :(得分:1)

类和对象是抽象。在定义它们时,程序设计者试图将代码的不同部分分成在相应上下文中有意义的逻辑实体。进行OOP时的关键概念(面向对象的设计是abstractionencapsulationinheritance,我建议你研究。其他需要研究的主题是SOLID,{{ 3}},DRYKISS原则。也许其中一些很复杂,但有些很简单。例如来自SOLID的S代表单一责任这个原则表明,一个类只有一个目的,只定义一种类型的对象。在你的情况下,艺术家是一个与专辑不同的逻辑实体。一个艺术家产生专辑,这表示这些之间存在着一种关系,但它们并不完全相同。除了专辑之外,艺术家可以做其他事情,比如音乐会或采访,专辑也可以由艺术家团体或其他实体制作,并且通常具有不同的属性而非艺术家。