组合两个PHP对象(类)

组合两个PHP对象(类),php,class,object,Php,Class,Object,我正在做一个项目,需要很多独立的对象(类)来协调工作。我已经想出了解决问题的办法,但我只是想听听其他的观点,因为我觉得我错过了一些东西 本质上,我有一个visitor和一个location类,每个类都被初始化并存储在一个变量中,比如$visitor和$location;两者都具有访客独有的数据和页面调用中引用的位置 我想要/需要做的基本上是建立一个“桥”,这样我就可以调用一个会影响这两个对象的方法。例如,我希望能够调用$bridge->favorite();除了增加该位置的收藏夹数量外,它还将把

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

本质上,我有一个visitor和一个location类,每个类都被初始化并存储在一个变量中,比如$visitor和$location;两者都具有访客独有的数据和页面调用中引用的位置

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

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

$bridge = new Bridge($locationclass, $visitorclass);
$bridge->favorite();
所以它本质上调用了我拥有的另一个类“bridge”,方法是favorite,然后使用已经设置的两个类。我认为这是一个不错的解决方案,但我觉得我错过了一个更好的解决方案


所有的输入都将非常有用,谢谢您的时间

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

要回答您的示例,您只需将位置添加到访客最喜欢的位置。

如果你想计算一个位置被添加到收藏夹的次数,计算有多少访问者在他们的收藏夹中。不要将相同的信息存储两次。

如果您需要执行此类操作,这意味着您的应用程序设计得不好

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{
   ...
  }
}
要回答您的示例,您只需将位置添加到访客最喜欢的位置。

如果你想计算一个位置被添加到收藏夹的次数,计算有多少访问者在他们的收藏夹中。不要将同一信息存储两次。

这只是一个解决方法,如果您没有其他想法来解决问题,请使用它。嘿,佩蒂卡尔,谢谢您的回复。这与我目前的情况非常相似,你认为这是解决这个问题的最好办法吗?如果你没有答案,那么我的回答是肯定的。但是,如果可以的话,你需要重新设计你的应用程序,因为这不是最佳实践。这只是一个解决方法,如果你没有其他想法来解决问题,就使用它。嘿,佩蒂卡,谢谢你的回复。这与我目前的情况非常相似,你认为这是解决这个问题的最好办法吗?如果你没有答案,那么我的回答是肯定的。但是如果可以的话,你需要重新设计你的应用程序,因为这不是最佳实践。嘿,萨米,谢谢你花时间回复。我感谢你的反馈!嘿,萨米,谢谢你花时间回复。我感谢你的反馈!
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{
   ...
  }
}