PHP упростить код

Есть следующий код:

public static function all()
{
    $posts_array = [];
    for ($i=0; $i < 4; $i++) { 
        $posts_array[] = new Post('title', 'url', 'description', 'text');   
    }
    return $posts_array;
}

Интересует, как можно вернуть сразу несколько Post, без использования переменной. Пробовал так:

public static function all()
{
    for ($i=0; $i < 4; $i++) { 
        return new Post('title', 'url', 'description', 'text');   
    }
}

Но в таком случае возвращается только один элемент.


Ответы (1 шт):

Автор решения: Scruffy the Janitor

Вы должны понимать, что ключевое слово return выходит из цикла на первой же итерации. ИМХО ответ на вопрос - никак. Вы можете вернуть какую-либо совокупность объектов типа массива . Либо же использовать класс итератор с next() . Php учил лет 10 назад , поэтому точно не помню. Короче управлять можно итерациями , получил объект, хочешь второй написал hasnext() и next() типа такого. Почитайте в оф. Документации про итераторы и генераторы, может вам это нужно

→ Ссылка