我正在开发一个项目,需要很多单独的对象(类)才能协同工作。我想出了解决问题的方法,但我只是想听听其他一些观点,因为我觉得我错过了一些东西。
基本上,我有一个访问者和一个位置类,每个都被初始化并存储在一个变量中,例如$ visitor和$ location;两者都具有访问者唯一的数据和页面调用中引用的位置。
我想要/需要做的就是创建一个'桥',这样我就可以调用一个会影响这两个对象的方法。例如,我希望能够调用$ bridge-> favorite();除了增加该地点的收藏数量之外,它还会将最喜欢的参考添加到访问者的个人资料中。
我现在所做的基本上是一座桥梁:
$bridge = new Bridge($locationclass, $visitorclass);
$bridge->favorite();
所以它基本上调用了我的另一个类'bridge',用方法收藏,然后使用已经设置的两个类。我认为这是一个很好的解决方案,但我觉得我错过了一个更好的解决方案。
所有输入都非常有用,谢谢您的时间!
答案 0 :(得分:3)
如果您需要执行此类操作,则表示您的应用程序设计不合理。
要回答您的示例,您需要做的只是将位置添加到访问者最喜欢的地方 如果您想要计算添加到收藏夹的位置的次数,计数有多少访问者在其收藏中拥有该位置。不要存储两次相同的信息。
答案 1 :(得分:1)
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{
...
}
}