2017-05-04 77 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

這是一個使用接口來簡化訪問共享相同行爲的類的方法的基本示例。使用相同的邏輯可以使您的控制器僅使用一個控制器和捆綁包即可訪問多個服務。