Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 将多个外部API组合在一个_Oop_Design Patterns_Laravel - Fatal编程技术网

Oop 将多个外部API组合在一个

Oop 将多个外部API组合在一个,oop,design-patterns,laravel,Oop,Design Patterns,Laravel,所以我又有一个问题 我需要访问几个API SOAP,REST是我为其创建或下载的软件包。每个API都会以自己的方式返回我需要的数据,因此我想为每个API创建一个类,使用相同的方法来准确地输出我需要的数据。所以我认为创建一个接口是正确的,因为每个类都应该有相同的方法 现在的问题是: 让我们假设在接口中有一个名为getAllMovies的方法。现在我想调用这个方法,比如getAllMovies$APItoUse或getAllMovies。如果没有param,我想从所有可播放的API获取电影 最好的方

所以我又有一个问题

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

现在的问题是:

让我们假设在接口中有一个名为getAllMovies的方法。现在我想调用这个方法,比如getAllMovies$APItoUse或getAllMovies。如果没有param,我想从所有可播放的API获取电影

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

我认为有几种方法可以做到这一点,但我提出这个问题是因为我想让它成为正确的方式


提前谢谢你

您可以使用api的名称构建一个数组并对其进行迭代。一旦进入bucle,您就可以执行一个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());
}

谢谢你的回复。我就是这样想的。因为每个API都有更多的方法,如果我从上面的示例中创建一个类,为每个API方法创建一个方法,然后决定使用哪个API,我会做得最好,对吗?我认为可能有更好的模式,但看起来我是对的: