Laravel重构-如何重构我的方法?

时间:2018-11-28 16:14:42

标签: php laravel laravel-5

我还处于Laravel的初级阶段-所以重构是我需要解决的问题。

因此,我有2种方法可以引入API's,一种方法可以显示即将到来的足球比赛,另一种可以带来结果。两者在$ fixtures和$ results变量下共享相同的auth数据。 $url除了fixtures和results关键字部分外几乎相同。

我不确定如何重构它。我是否需要使用重复的数据创建一个额外的函数,然后在其他2种方法中调用它?我不是100%知道该怎么写!

protected function getFixtures()
{
    $url = 'https://sportdata.p.mashape.com/api/v1/free/soccer/matches/fixtures/premier-league';

    $fixtures = Zttp::withHeaders([
        "X-Mashape-Key" => "WxLtGy9Mx6msheZOC3IISAGlqUcDp1qkbudjsnpL91tbHWQTPF",
        "Accept" => "application/json"
    ])->get($url, []);

    return $fixtures->json();
}

protected function getResults()
{
    $url = 'https://sportdata.p.mashape.com/api/v1/free/soccer/matches/results/premier-league';

    $results = Zttp::withHeaders([
        "X-Mashape-Key" => "WxLtGy9Mx6msheZOC3IISAGlqUcDp1qkbudjsnpL91tbHWQTPF",
        "Accept" => "application/json"
    ])->get($url, []);

    return $results->json();
}

1 个答案:

答案 0 :(得分:2)

您可以将与第三方服务的所有通信移至单独的功能,如下所示:

protected function getFixtures() {
    return $this->getData('fixtures');
}

protected function getResults() {
    return $this->getData('results');
}
protected function getData($action) {
    $url = 'https://sportdata.p.mashape.com/api/v1/free/soccer/matches/'.$action.'/premier-league';

    $results = Zttp::withHeaders([
        "X-Mashape-Key" => "WxLtGy9Mx6msheZOC3IISAGlqUcDp1qkbudjsnpL91tbHWQTPF",
        "Accept" => "application/json"
    ])->get($url, []);

    return $results->json();
}