Por que você precisa de um número inteiro improvável na paginação?

17

A paginate_linksreferência da função Codex tem algum código de exemplo que está sendo lançado em toda a rede.

Possui uma seção que usa uma variável chamada $big = 999999999; // need an unlikely integer:

echo paginate_links( array(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $wp_query->max_num_pages
) );

E é usado em str_replacena echo paginate_linksfunção.

Isso é alguma forma de encapsulamento?

Jason Green
fonte

Respostas:

16

Observe o get_pagenum_link( $big ): Isso criará um URL ( não um link) com base no número fornecido no primeiro parâmetro.

Essa função é usada para obter o padrão básico para a URL e o número inteiro alto é usado aqui, porque:

  1. Você deve fornecer um número inteiro como argumento.
  2. O URL resultante é filtrado apply_filters('get_pagenum_link', $result)e pode ser alterado por plug-ins. Esse risco é um pouco maior para números correspondentes às páginas existentes, por exemplo, quando um plug-in implementa títulos separados para subpáginas.

Portanto, esta é apenas uma ... convenção suja, um sinal para outros plugins: não mude isso, por favor! Eu acho PHP_INT_MAXque teria sido melhor, mas ainda feio. E eu me pergunto quantos desenvolvedores de plugins sabem disso.

O número é então substituído pelo espaço reservado necessário em paginate_links().

O que você vê aqui é uma API incompleta . Tente aprender algo com este exemplo - não libere APIs incompletas ou seus documentos parecerão embaraçosos. :)

fuxia
fonte
Concordo que o PHP_INT_MAX teria sido melhor IMO, mas teria me confundido na época mais. Eu realmente gosto da sua explicação, isso confirma que eu estava pensando na linha certa. Eu só não queria fazer suposições.
Jason Green
Então, isso é usado apenas no caso de um filtro que get_pagenum_linkafeta os números de páginas existentes ? (já que paginate_links()usa get_pagenum_link()por padrão de qualquer maneira). Parece um caso extremo para mim, a menos que esteja faltando alguma coisa?
Cai
@ Cai Parece que já foi um problema real uma vez. As bases de código mantidas por um longo tempo tendem a ser preenchidas com soluções alternativas para casos extremos.
Fuxia
Ele se parece paginate_links() nem sempre utilizar get_pagenum_link()por padrão, então eu estou querendo saber se isso é uma convenção de antes, em seguida, e se o 'inteiro improvável' é realmente necessário (ou se a solução real era simplesmente get_pagenum_link())?
Cai