捆绑包之间的冗余代码

时间:2017-05-04 21:33:13

标签: php symfony refactoring

我有一个使用云API的symfony 2应用程序。这些API共享相同的逻辑,只有被调用的方法是不同的。

我该如何组织mo代码?

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

  • 包含API的开关/案例的单个捆绑包

  • 一个路由到控制器,引用API提供程序并在调用后???服务?子控制器?

  • 其他想法?

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题。但根据我的经验,我建议使用一个Bundle和多个服务。创建一个公共类和接口并重用代码,为每个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();

网址可能如下所示:/ time / api?time_service = china_time

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