If else: альтернативный синтаксис

Товарищи!

Помогите пожалуйста перевести из альтернативного синтаксиса в нормальный вот это:

public function pages() : string
{
    if($this->pagesTotal > 1) {
        for($pr = '', $i = 1; $i <= $this->pagesTotal; $i++) {
            echo $pr = (($i == 1 || $i == $this->pagesTotal || abs($i - $this->page) < 2) ? ($i == $this->page ? ' [' . $i . ']' : ' <a href="' . $i . '">' . $i . '</a>') : (($pr == ' ...' || $pr == '') ? '' : ' ...'));
        }
    }
}

Чтобы и вместо $pr = '' было $html .=, как здесь:

public function pages() : string
{
    if ($this->pagesTotal > 1) {
        $html = '';
        for ($i = 1; $i <= $this->pagesTotal; $i++) {
            if ($this->page > 1 && $i == $this->page - 1) {
                $html .= '<li><a href="' . $this->url . '/' . $i . '"></a>...</li>';
                continue;
            }
            if ($i > $this->page + 1) {
                $html .= '<li><a href="' . $i . '"></a>...<li>';
                break;
            }
            if ($i == $this->page) {
                $html .= ' <li class="current">' . $i . '</li>';
            } else {
                $html .= '<li><a href="' . $this->url . '/' . $i . '">' . $i . '</a></li>';
            }
        }
        return $html;
    }
}

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

Автор решения: BigTows

Как-то так:

public function pages(): string
{
    $result = '';

    $pages = $this->pagesTotal;
    $page = $this->page;

    if ($pages > 1) {
        for ($pr = '', $i = 1; $i <= $pages; $i++) {
            $result .= $pr = (($i == 1 || $i == $pages || abs($i - $page) < 2) ? ($i == $page ? ' [' . $i . ']' : ' <a href="?page=' . $i . '" title="Страница ' . $i . '">' . $i . '</a>') : (($pr == ' ...' || $pr == '') ? '' : ' ...'));
        }
    }
    return $result;
} 
→ Ссылка