将多个外部API合二为一

时间:2014-11-17 10:48:02

标签: oop design-patterns laravel

所以我又有一个问题。

我需要访问我创建或下载了包的几个API(SOAP,REST)。好吧,每个API都以自己的方式返回我需要的数据,因此我想为每个API创建一个类,使用相同的方法输出数据,我确切地需要它。所以我认为创建一个接口是正确的,因为每个类都应该有相同的方法。

现在的问题是:

假设我在界面中有一个名为 getAllMovies()的方法。现在,我想将此方法称为 getAllMovies($ APItoUse) getAllMovies()。没有参数,我想从所有可用的API中获取电影。

最好的方法是什么?我应该创建类似于知道我使用的所有API的类,然后在我需要的每个API中调用该方法,将输出合并在一起并返回它吗?

我认为有几种方法可以做到这一点,但我问,因为我想以正确的方式做到这一点。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用api的名称构建一个数组并迭代它。一旦进入bucle,你就可以执行一个case case,并根据你所在的api,例如一个类或另一个类的对象。然后只需调用您需要的方法。

$apis = array('api1','api2',...);
$allMovies = array();
foreach($apis as $api){
    switch($api){
        case 'api1': $obj = new API1Class; break;
        case 'api2': $obj = new API2Class; break;
        ...
    }
    array_push($allMovies,$obj->getAllMovies());
}