2017-05-04 128 views
-1

我有一个使用云API的symfony 2应用程序。这些API共享相同的逻辑,只有被调用的方法是不同的。软件包之间的冗余代码

如何组织mo代码?

  • 每个API一个包?其实我试过这种方式,但每个提供商都需要越来越多的冗余代码。

  • 单束带开关/情况下,用于API的

  • 一个路由到控制器,其与所述API提供者和呼叫的后一参考???服务?子控制器?

  • 其他想法?

+0

接下来的问题,请转到[帮助部分](http://stackoverflow.com/help),然后阅读[我应该避免询问什么类型的问题?](http://stackoverflow.com/help/on-topic)和[如何在StackOverflow上提问](http://stackoverflow.com/help/how-to-ask)。 –

回答

0

我不知道我是否理解你的问题。但为了我的经验,我建议使用一个捆绑多个服务。创建一个通用的类和接口并重用代码,为每个API创建类,但使用接口来简化访问每个API的方式。

例子:

interface timeAPIInterface 
{ 
    public function giveMeTheTime(); 
} 

class timeInChina implements timeAPIInterface 
{ 
    public function giveMeTheTime() 
    { 
     //logic to connect to CHINA API and get the time 
    } 
} 

class timeInUSA implements timeAPIInterface 
{ 
    public function giveMeTheTime() 
    { 
     //logic to connect to USA API and get the time 
    } 
} 

然后在您的控制器,可以实现类似:

$service = $request->get('time_service'); 
$time = $this->get($service)->giveMeTheTime(); 

URL可以是这样的:?/时间/ API time_service = china_time

这是一个使用接口来简化访问共享相同行为的类的方法的基本示例。使用相同的逻辑可以使您的控制器仅使用一个控制器和捆绑包即可访问多个服务。