Perché hai bisogno di un numero intero improbabile nella paginazione?


17

Il paginate_linksriferimento alla funzione Codex ha del codice di esempio che viene ripubblicato su tutta la rete.

Ha una sezione che utilizza una variabile chiamata $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
) );

Ed è usato in str_replacein echo paginate_linksfunzione di.

È una qualche forma di incapsulamento?

Risposte:


16

Nota get_pagenum_link( $big ): Questo creerà un URL ( non un collegamento) basato sul numero fornito nel primo parametro.

Tale funzione viene utilizzata per ottenere il modello di base per l'URL e qui viene utilizzato il numero intero alto perché:

  1. È necessario fornire un numero intero come argomento.
  2. L'URL risultante viene filtrato con apply_filters('get_pagenum_link', $result)e potrebbe essere modificato dai plugin. Questo rischio è leggermente più elevato per i numeri corrispondenti alle pagine esistenti, ad esempio quando un plugin implementa titoli separati per le sottopagine.

Quindi questa è solo una ... convenzione sporca, un segnale per altri plugin: non cambiarlo per favore! Penso che PHP_INT_MAXsarebbe stato meglio, ma comunque brutto. E mi chiedo quanti sviluppatori di plugin lo sappiano .

Il numero viene quindi sostituito con il segnaposto necessario in paginate_links().

Quello che vedi qui è un'API incompleta . Prova a imparare qualcosa da questo esempio: non rilasciare API incomplete o i tuoi documenti sembreranno imbarazzanti. :)


Sono d'accordo che PHP_INT_MAX sarebbe stato IMO migliore, ma al momento mi avrebbe confuso di più. Mi piace molto la tua spiegazione, conferma che stavo pensando sulla retta via. Non volevo fare alcuna ipotesi.
Jason Green,

Quindi questo viene utilizzato solo nel caso di un filtro che get_pagenum_linkinfluisce sui numeri di pagina esistenti ? (poiché paginate_links()utilizza get_pagenum_link()comunque di default). Mi sembra un caso estremo, a meno che non mi manchi qualcosa?
Cai,

@Cai Sembra che sia stato un vero problema una volta. Le basi di codice mantenute a lungo tendono ad essere riempite con soluzioni alternative per casi limite.
fuxia

Esso si presenta come paginate_links() non utilizzare sempre get_pagenum_link()di default così mi chiedo se questa è una convenzione da prima di allora e se l' 'intero improbabile' è veramente necessario (o se la vera soluzione era semplicemente get_pagenum_link())?
Cai,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.