Рефакторинг Laravel - Как мои методы могут быть реорганизованы? - PullRequest
0 голосов
/ 28 ноября 2018

Я все еще на начальном уровне в Laravel - поэтому мне нужно разобраться с рефакторингом.

Итак, у меня есть 2 метода, которые вводят API's, один показывает предстоящие футбольные матчи, икаждый приносит результаты.Оба используют одни и те же данные auth в переменной $ fixtures и $ results.$url - почти то же самое, за исключением части ключевого слова fixtures and results.

Я не совсем уверен, как я могу это изменить.Нужно ли создавать дополнительную функцию с дублированными данными, а затем вызывать ее в двух других моих методах?Я не уверен на 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 голосов
/ 28 ноября 2018

Вы можете переместить всю связь со сторонней службой в отдельную функцию, например:

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...