组合两个 PHP 对象(类)


Combine two PHP objects (classes)

我正在做一个需要很多单独的对象(类)才能协同工作的项目。我已经想出了一个解决问题的方法,但我只是想听听其他一些观点,因为我觉得我错过了一些东西。

所以从本质上讲,我有一个访问者和一个位置类,每个都经过初始化并存储在一个变量中,例如$visitor和$location;两者都具有访问者独有的数据和页面调用中引用的位置。

想要/需要做的本质上是建立一个"桥梁",这样我就可以调用一个会影响这两个对象的方法。例如,我希望能够调用$bridge->favorite();除了增加该位置的收藏夹数量外,它还会将该收藏夹引用添加到访问者的个人资料中。

我现在所做的基本上是一座桥梁:

$bridge = new Bridge($locationclass, $visitorclass);
$bridge->favorite();

所以它本质上用方法收藏夹调用我的另一个类"bridge",然后使用已经设置的两个类。我认为这是一个不错的解决方案,但我觉得我错过了一个更好的解决方案。

所有的意见将非常有帮助,感谢您的时间!

如果你需要做这种事情,这意味着你的应用程序设计得不好。

要回答您的示例,您所要做的就是仅将位置添加到访问者最喜欢的位置。
如果您想计算某个位置被添加到收藏夹的次数,请计算有多少访问者在他们的收藏夹中拥有该位置。不要存储两倍相同的信息。

class Bridge{
private $classes;
function  construct($classes)
{
 $this->classes  = $classes;
}
function _call($name,$params)
{
  foreach($classes as $class)
  {
    if(method_exists($class,$name)){
     return call_user_method_array($name,$class,$params);
    }
  }else{
   ...
  }
}