如何在PHP中创建相互依赖的对象

如何在PHP中创建相互依赖的对象,php,design-patterns,Php,Design Patterns,在创建共同依赖对象时,我应该考虑哪些选项/模式?(我正在使用PHP)。例如: 我有一个具有必需电子邮件属性的组织对象 组织化也是电子邮件的必备属性 我在工厂里创建所有对象,所以我有相当程度的灵活性。到目前为止,我一直在放松对其中一个对象的约束,并给它一个只能工作一次的setter。例如: 在Email对象上,我将组织作为可选属性 然后,我将添加一个email->setOrganization($org)方法,该方法将检查email::Organization的值是否为null,然后再进行设

在创建共同依赖对象时,我应该考虑哪些选项/模式?(我正在使用PHP)。例如:

  • 我有一个具有必需电子邮件属性的组织对象
  • 组织化也是电子邮件的必备属性
我在工厂里创建所有对象,所以我有相当程度的灵活性。到目前为止,我一直在放松对其中一个对象的约束,并给它一个只能工作一次的setter。例如:

  • 在Email对象上,我将组织作为可选属性
  • 然后,我将添加一个
    email->setOrganization($org)
    方法,该方法将检查email::Organization的值是否为null,然后再进行设置

但是有更好的办法吗?我考虑过的一个选项是创建一个原型对象(在本例中为电子邮件),只允许替换原型。

更好的方法是重新考虑为什么电子邮件需要一个单独的对象,该对象也具有“Organization”所需的属性。如果这些东西是紧密耦合的,为什么它们是独立的类呢?谢谢pvg,我还需要电子邮件作为用户的一个属性,例如。好吧,同样的事情也适用。若你们所建模的两个事物是如此紧密地耦合,那个么很可能一个是另一个的属性,而不是它们相互之间的属性。组织或用户可能与电子邮件有“有”关系,电子邮件可能与用户或组织没有这种关系。你是对的,用户(或组织)肯定“有”电子邮件,反之亦然。但我确实需要从电子邮件导航到其所有者(因为用户使用其电子邮件地址登录),如果允许电子邮件在没有所有者的情况下实例化,那将是一个错误。您不能在组织内部创建电子邮件对象吗$此->电子邮件=新电子邮件($this);一个更好的方法是重新考虑为什么您需要一个单独的对象来处理电子邮件,它也具有必需的“组织”属性。如果这些东西是紧密耦合的,为什么它们是独立的类呢?谢谢pvg,我还需要电子邮件作为用户的一个属性,例如。好吧,同样的事情也适用。若你们所建模的两个事物是如此紧密地耦合,那个么很可能一个是另一个的属性,而不是它们相互之间的属性。组织或用户可能与电子邮件有“有”关系,电子邮件可能与用户或组织没有这种关系。你是对的,用户(或组织)肯定“有”电子邮件,反之亦然。但我确实需要从电子邮件导航到其所有者(因为用户使用其电子邮件地址登录),如果允许电子邮件在没有所有者的情况下实例化,那将是一个错误。您不能在组织内部创建电子邮件对象吗$此->电子邮件=新电子邮件($this);