Вызов метода php из самого себя

Рейтинг: 0Ответов: 1Опубликовано: 01.04.2015

Считываю и фильтрую данные из API и, преобразовав в JSON, отдаю на обработку фронт-энду. Данные получаются пошагово, т.е. за первый запрос API возвращает ~10% всех данных, за второй и третий от 70% до 90%, т.е. всё остальное. Дело в том, что иногда в первом запросе нет удовлетворяющих фильтрам результатов (пустые, либо не полные данные приходят), и мне нужно перезапустить этот же метод.

Могу я вызвать его вот так:

if(count($NewArray)==0) 
{ 
    $this->GetList($IntoParams, $json["search_id"]);
}
else 
{
    return $NewArray;
}

search_id - это идентификатор, передающийся для идентификации цепочки запросов, чтобы API понимал что по этому search_id уже отдавались какие-то данные (например первые 10%), и нужно отдавать данные дальше. Когда всё уже отдано, API возвращает массив, содержащий только search_id.

Весь метод GetList() (без подробностей) выглядит так:

public function GetList($aParams, $uuid) {

    if(isset($uuid) && $uuid!="")
        {   
          //Если есть $uuid то сразу обращаемся к API, получаем JSON
          //предварительно его очищаем от резуьтатов которые нам не нужны
          //в результате получается почищенный $json
        }
    else
        {
          //Если $uuid нет, формируем предварительный запрос к API
          //получаем $uuid и дальше то же самое что выше, в 
          //результате запроса получаем очищенный $json
        }
          //Дальше преобразуем структуры $json к такому виду 
          //который  воспринимает front-end сохраняется всё в $NewArray

Я хочу сразу же перезапустить метол если $NewArray получился пустым. Вопрос как мне это сделать? ))

Ответы

▲ 1

При вызове $this->GetList... вы return забыли, метод вызывается но ничего вам не возвращает. Надо так:

if(count($NewArray)==0) 
{ 
    return $this->GetList($IntoParams, $json["search_id"]);
}
else 
{
    return $NewArray;
}